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

use*_*190 4 python django django-views django-users

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

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

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

Bur*_*lid 5

django 提供了一个user_passes_test装饰器来做到这一点。您可以将任何函数传递给它,如果该函数返回假值,则不会显示该视图。

这个例子更好地解释了它:

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):
    ...
Run Code Online (Sandbox Code Playgroud)

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

def in_admin_group(user):
   return 'administration' in user.groups
Run Code Online (Sandbox Code Playgroud)