Django 在基于类的视图中检查超级用户是否

时间:2021-05-01 22:16:55

标签: python django

我正在将我的项目从基于函数的视图转换为基于类的视图。在视图函数中,我可以使用 request.user.is_superuser() 函数检查用户是否是超级用户。我可以通过在 LoginRequiredMixin 类中继承 View 来检查用户是否登录,我想知道是否有任何类似的方法可用于检查用户是否是 View 中的超级用户{1}} 类。我想要一个只有网站超级用户才能访问的 Django 应用。

2 个答案:

答案 0 :(得分:2)

您可以创建自己的:

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

        class SuperUserRequiredMixin(LoginRequiredMixin, UserPassesTestMixin):

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

然后在您的 ClassBasedView 中使用 SuperUserRequiredMixin

而不是使用 LoginRequiredMixin

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

答案 1 :(得分:0)

他是您尝试完成的工作的示例用例。你需要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