Django 通用 DeleteView 身份验证

时间:2021-04-29 22:30:54

标签: django django-views django-generic-views

我想创建一个只有作者和授权组才能删除的帖子。

class PostDeleteView(DeleteView):
   model = Posts
   template_name = 'deletepost.html'
   success_url = '/home'

目前所有用户都可以删除帖子。

1 个答案:

答案 0 :(得分:0)

您可以使用 PermissionRequiredMixin - 请参阅 documentation

例如:

from django.contrib.auth.mixins import PermissionRequiredMixin

...

class PostDeleteView(PermissionRequiredMixin, DeleteView):
    model = Posts
    template_name = 'deletepost.html'
    success_url = '/home'
    permission_required = 'myapp.delete_posts'  # <---- set your permissions here (str or tuple)

    def has_permission(self):
        has_perms = super().has_permission()
        # You can check if self.request.user is the author here
        self.object = self.get_object()
        user_is_author = self.object.author == self.request.user  # example only
        return has_perms or user_is_author