【发布时间】:2021-02-19 18:24:02
【问题描述】:
我想为我的用户和超级用户制作一个按钮,以便能够在 django 管理中删除他们的帖子。当我单击删除按钮时,它既不会将我重定向到指定的 URL,也不会删除帖子。我使用 mixins 来让管理员删除每个人的每个帖子,但用户只能删除他们的帖子。
#MIXIN.py
class DeleteArticleAccessMixin():
def dispatch(self, request, pk, *args, **kwargs):
article = get_object_or_404(Article, pk=pk)
if article.author == request.user or request.user.is_superuser:
return super().dispatch(request, *args, **kwargs)
else:
raise Http404("Access Denied!")
#Views.py
class ArticleDelete(DeleteArticleAccessMixin, DetailView):
model = Article
success_url = reverse_lazy('account:home')
template_name = "registration/article_confirm_delete.html"
#urls.py
path('article/delete/<int:pk>', ArticleDelete.as_view(), name="article-delete"),
#我的主页 HTML 页面
{% if user.is_superuser or user.is_author %}
<a class="badge text-danger badge-primary"
href="{% url "account:article-delete" article.pk %}">Delete Article</a>
{% endif %}
#我的 Html 删除页面
<div class="col-md-8 text-center mx-auto">
<div class="card card-danger">
<div class="card-header">
<h3 class="card-title">Delete Article</h3>
</div>
<div class="card-body py-4">
<form method="post">{% csrf_token %}
<p class="py-2">Are you sure you want to delete "{{ object }}" written by
"{{ object.author.get_full_name }}"?</p>
<input type="submit" value="Confirm" class="btn btn-danger">
</form>
</div>
</div>
</div>
【问题讨论】:
标签: django django-views django-templates mixins