Django 类视图中如何检查超级用户身份

3

我正在将我的项目从基于函数的视图转换为基于类的视图。在视图函数中,我可以使用request.user.is_superuser()函数来检查用户是否是超级用户。我可以通过继承LoginRequiredMixinView类中检查用户是否已登录,我想知道是否有类似的方法可以用于在View类中检查用户是否是超级用户。我希望创建一个仅由站点超级用户访问的Django应用程序。

2个回答

7

您可以创建自己的:

from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin

class SuperUserRequiredMixin(LoginRequiredMixin, UserPassesTestMixin):

    def test_func(self):
        return self.request.user.is_superuser

现在,您可以使用SuperUserRequiredMixin而不是在ClassBasedView中使用LoginRequiredMixin

现在您的视图只允许已登录的超级用户。


谢谢,这个方法有效。根据最佳实践,我应该把自定义类放在哪里? - undefined
1
老实说,我不知道什么是“最佳实践”,但我会把它放在一个mixins.py或permissions.py文件中(通常是一个单独的文件),需要时再进行导入。 - undefined

-1

他是你所要实现的示例用例。你需要使用 self.request.user.is_superuser

class ExampleClassView(LoginRequiredMixin,TemplateView):
    template_name = "core/index.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["is_super"] = self.request.user.is_superuser
        return context

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接