创建管理员限制的网址

时间:2016-08-30 15:10:15

标签: python django django-1.9

所以在我的urls.py(django默认管理部分之外)我想将一些网址限制为管理员,所以如果我有这个用于登录用户

  from django.contrib.auth.decorators import login_required

    urlpatterns = [
        url(r'^a1$',login_required( views.admin_area1 ), name='a1'),
        url(r'^a2$', login_required(views.admin_area2) , name='a2'),
        url(r'^a3', login_required(views.admin_area3) , name='a3'),
    ]

是否有enyway这些链接到已登录的管理员,而不仅仅是任何已登录的用户? 除了according to this我可以使用user_passes_test,但我必须在视图中使用它

1 个答案:

答案 0 :(得分:7)

您可以像使用user_passes_test(lambda u: u.is_superuser)一样使用login_required返回的装饰器:

urlpatterns = [
    url(r'^a1$', user_passes_test(lambda u: u.is_superuser)(views.admin_area1), name='a1'),
]

如果要限制对管理员的访问,那么使用staff_member_required装饰器(检查is_staff标志)而不是检查is_superuser标志可能更准确。< / p>

from django.contrib.admin.views.decorators import staff_member_required

urlpatterns = [
    url(r'^a1$', staff_member_required(views.admin_area1), name='a1'),
    ...
]