为 Django 中的特定视图设置用户权限

kdu*_*ubs 5 django django-admin django-views

我正在使用 Django 制作一个包含一堆不同页面的网站。我只有视图,我没有在我的项目中定义任何模型。我希望某些用户具有受限访问权限(他们只能看到我创建的一些视图)。我已经在 Django 管理站点中设置了一些用户,并使用 Python@login_required装饰器向我的网站添加了登录功能。

不过,我对如何为每个用户设置查看权限有点迷茫。我看过@permission_required装饰器,但它似乎只与模型有关,而不与视图有关。你如何在 Django 中设置页面查看权限?

Pau*_*ine 7

权限与模型相关联。如果您的授权逻辑链接到视图而不是模型,请考虑创建一个组并使用user_passes_test装饰器。例如,假设您有一个只有主管才能看到的报告:创建一个名为 Supervisors 的组并测试成员身份:

def must_be_supervisor(user):
    return user.groups.filter(name='Supervisors').count()

@user_passes_test(must_be_supervisor)
def quarter_report(request):
    ...
Run Code Online (Sandbox Code Playgroud)


小智 5

您应该对视图使用 user_passes_test 装饰器。Django 文档有一个很好的例子说明它的用法 https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

编辑:实际上你也可以使用permission_required装饰器查看视图 https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.permission_required