django - 仅适用于特定用户组的可访问URL模式

时间:2014-07-18 10:50:59

标签: python django django-views django-users

是否有办法限制对某些django用户组的url模式访问? 例如,以/settings/开头的所有内容只能由管理组访问。

或者也许可以创建一个新的装饰器,例如@group("administration"),并将其添加到仅限于该组的每个视图中?

我个人更喜欢第二种方式,如果可能的话。

2 个答案:

答案 0 :(得分:3)

django提供了一个user_passes_test装饰器来做这件事。您可以传递任何函数,如果函数返回false值,则不显示视图。

该示例更好地解释了:

from django.contrib.auth.decorators import user_passes_test

def email_check(user):
    return '@example.com' in user.email

@user_passes_test(email_check)
def my_view(request):
    ...

在您的情况下,您想要查看用户是否在特定群组中:

def in_admin_group(user):
   return 'administration' in user.groups

答案 1 :(得分:1)

您可能想要