在Django中,只允许管理员用户访问视图

问题描述 投票:2回答:2

我在Django 1.10中有一个仪表板应用程序。我想限制只有管理员用户访问此应用程序的视图,如果用户未登录,则将其重定向到管理员的登录页面。

这是我想要应用某种逻辑的地方,这样只有管理员用户才能看到以/ dashboard /开头的链接

url(r'^ dashboard /',include('demo.dashboard.urls',namespace ='dashboard'))

django
2个回答
7
投票

您必须使用@login_required装饰器或@staff_member_required装饰器来装饰各个视图。可能是后者,正如文档所述:

如果您正在为Django的管理员编写自定义视图(或者需要内置视图使用的相同授权检查),您可能会发现django.contrib.admin.views.decorators.staff_member_required()装饰器是login_required()的有用替代品。


3
投票

你应该使用user_passes_test装饰:

def check_admin(user):
   return user.is_superuser

@user_passes_test(check_admin)
def my_view(request):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.