如何在 Django CBV 中限制用户的操作

How to limit the actions of a user in django CBV

我有一个理论问题。例如,我有 2 个用户的 2 个博客。当我以第一个用户身份登录时,我可以看到第二个用户的帖子,但不仅可以看到,还可以更新和删除它们。第二个用户也是如此,可以删除和更新第一个用户的帖子。我应该在 django class 基本视图中做什么,以便第一个用户只能编辑和删除他自己的帖子,而不能编辑和删除其他用户的帖子。我遇到过 request.user == post.user 签入基于函数的视图。但是基于 class 的视图的解决方案是什么。谢谢你。

一种常见的方法是覆盖 get_queryset 方法并使用 self.request.user 过滤它。

class MyView(UpdateView):
    ...

    def get_queryset(self):
        return super(MyView, self).get_queryset().filter(user=self.request.user)