django - 仅适用于某些用户组的可访问 url 模式

Posted

技术标签:

【中文标题】django - 仅适用于某些用户组的可访问 url 模式【英文标题】:django - Accessible url pattern only for certain group of users 【发布时间】:2014-09-09 11:46:47 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

另外,这个兼容@login_required【参考方案2】:

你可能想要

为组添加特定权限并使用permission_required:https://docs.djangoproject.com/en/2.1/topics/auth/default/#the-permission-required-decorator

用 user_passes_test 测试用户是否在组中:https://docs.djangoproject.com/en/2.1/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

【讨论】:

以上是关于django - 仅适用于某些用户组的可访问 url 模式的主要内容,如果未能解决你的问题,请参考以下文章

vigenere cipher 的 C++ 函数仅有时有效(适用于某些输入,跳过其他输入)

phpmyadmin 权限仅适用于某些数据库

使用带有永久页面访问令牌的 Instagram Graph Api 仅适用于某些帐户

Collectstatic仅适用于某些应用

Facebook 应用程序请求 user_likes 的权限仅适用于某些用户

仅适用于部分用户的蓝牙 iOS 后台模式