我在Django 1.10中有一个仪表板应用程序。我想限制只有管理员用户访问此应用程序的视图,如果用户未登录,则将其重定向到管理员的登录页面。
这是我想要应用某种逻辑的地方,这样只有管理员用户才能看到以/ dashboard /开头的链接
url(r'^ dashboard /',include('demo.dashboard.urls',namespace ='dashboard'))
您必须使用@login_required
装饰器或@staff_member_required
装饰器来装饰各个视图。可能是后者,正如文档所述:
如果您正在为Django的管理员编写自定义视图(或者需要内置视图使用的相同授权检查),您可能会发现
django.contrib.admin.views.decorators.staff_member_required()
装饰器是login_required()
的有用替代品。
你应该使用user_passes_test装饰:
def check_admin(user):
return user.is_superuser
@user_passes_test(check_admin)
def my_view(request):
...