django - 仅对特定用户组访问的URL模式

4 投票
2 回答
3487 浏览
提问于 2025-04-18 13:50

有没有办法限制某些Django用户访问特定的URL模式?

比如说,所有以 /settings/ 开头的链接,只能让管理组的用户访问。

或者,也许可以创建一个新的装饰器,比如 @group("administration"),然后把它加到每个需要限制访问的视图上?

我个人比较喜欢第二种方法,如果可以的话。

2 个回答

1

你可能想要做以下两件事:

或者

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):
    ...

在你的情况下,你想检查用户是否在某个特定的组里:

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

撰写回答