我正在尝试让标准的 Aldryn 新闻博客按钮在我的前端页面中工作。所以每个用户都可以添加、删除和编辑文章(只有他们自己创建的文章,但这不是问题)。这是带有链接的菜单: 工具栏中的菜单
所以我想在我的模板中添加一个按钮来触发编辑、添加或删除提示:删除提示 我希望有人可以帮助我。提前致谢。
如果您真的不希望所有员工都看到工具栏,那么您将承担相当多的额外工作。我仍然认为这是一个选项,因为您可以应用权限,以便用户只能编辑您允许的内容,这意味着用户可以充分利用 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>
然后,您将为编辑页面创建类似的设置,将用户导航到具有可以修改和提交字段的表单的页面等。