django @login_required decorator for a superuser

后端 未结 7 1437
忘了有多久
忘了有多久 2020-12-01 02:21

Is there a decorator in django similar to @login_required that also tests if the user is a superuser?

Thanks

7条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-01 03:03

    For class based views, creating a reusable decorator:

    from django.contrib.auth.mixins import UserPassesTestMixin
    from django.views.generic import View
    
    
    def superuser_required():
        def wrapper(wrapped):
            class WrappedClass(UserPassesTestMixin, wrapped):
                def test_func(self):
                    return self.request.user.is_superuser
    
            return WrappedClass
        return wrapper
    
    @superuser_required()
    class MyClassBasedView(View):
        def get(self, request):
            # ...
    

提交回复
热议问题