django @login_required装饰器的超级用户

django中是否有类似于@login_required的装饰器,它也testing用户是否是超级用户?

谢谢

使用user_passes_test修饰器:

 from django.contrib.auth.decorators import user_passes_test @user_passes_test(lambda u: u.is_superuser) def my_view(request): ... 

如果员工成员资格足够,可以使用@staff_member_required装饰器:

 from django.contrib.admin.views.decorators import staff_member_required @staff_member_required def my_view(request): ... 

如果你想拥有和@staff_member_required类似的function,你可以很容易地编写你自己的装饰器。 以@staff_member为例,我们可以这样做。

 from django.contrib.admin.views.decorators import user_passes_test def superuser_required(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url='account_login_url'): """ Decorator for views that checks that the user is logged in and is a superuser, redirecting to the login page if necessary. """ actual_decorator = user_passes_test( lambda u: u.is_active and u.is_superuser, login_url=login_url, redirect_field_name=redirect_field_name ) if view_func: return actual_decorator(view_func) return actual_decorator 

这个例子是一个修改后的staff_member_required,只是改变了lambda中的一个检查。