0

我正在尝试让标准的 Aldryn 新闻博客按钮在我的前端页面中工作。所以每个用户都可以添加、删除和编辑文章(只有他们自己创建的文章,但这不是问题)。这是带有链接的菜单: 工具栏中的菜单

所以我想在我的模板中添加一个按钮来触发编辑、添加或删除提示:删除提示 我希望有人可以帮助我。提前致谢。

4

1 回答 1

0

如果您真的不希望所有员工都看到工具栏,那么您将承担相当多的额外工作。我仍然认为这是一个选项,因为您可以应用权限,以便用户只能编辑您允许的内容,这意味着用户可以充分利用 Django CMS 的内置功能,这很棒。

如果您仍然不想走这条路,那么您将不得不为您的article模型构建自己的迷你管理员。下面我很快就如何解决这个问题提出了一个想法,希望能帮助你指明正确的方向。

首先,您的文章视图应该类似于:

from django.views.generic import DetailView
from .models import Article

class ArticleView(DetailView):
    context_object_name = 'article'
    model = Article
    template_name = 'path/to/article.html'

    def get_context_data(self, **kwargs):
        context = super(ArticleView, self).get_context_data(**kwargs)
        context['show_controls'] = (self.request.user.is_authenticated() and 
            context[self.context_object_name].article == self.request.user)
        return context

使用文章模板,例如:

<section>
    {% if show_controls %}
        <div class="controls">
            <a href="/path/to/delete/[article-pk]" class="btn btn-danger">Delete</a>
            <a href="/path/to/edit/[article-pk]" class="btn btn-default">Edit</a>
        </div>
    {% endif %}
    <article>
        ...
    </article>
</section>

删除视图的路径可以是确认页面,如 Django 管理员。所以你会有这样的看法:

from django.contrib.auth.decorators import login_required
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404, redirect, render
from .models import Article


@login_required
def delete_article(request, article_pk):
    if request.method == "POST":
        article = get_object_or_404(Article, pk=article_pk)
        if request.user != article.author:
            raise PermissionDenied

        article.delete()
        return redirect('/redirect/url')
    else:
        context = {}
        ...

        return render(request, 'path/to/confirm/delete.html', context)

使用以下模板:

<section>
    <form method="POST">
        {% csrf_token %}
        <p>Are you sure you want to delete?</p>
        <input type="submit" value="Delete">
    </form>
</section>

然后,您将为编辑页面创建类似的设置,将用户导航到具有可以修改和提交字段的表单的页面等。

于 2017-08-11T08:29:54.670 回答