如果允许权限列表中的任何权限,则获取permission_required以返回True

时间:2015-06-09 12:41:13

标签: django

在1.7中,permission_required方法也接受权限列表,但是如果允许列表中的所有权限,它只返回True。如果允许任何权限,我需要它返回True。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我使用user_passes_test

from django.contrib.auth.decorators import user_passes_test

def manage_access(user):
    permissions_list = ['app.perm1', 'app.perm2', 'app.perm3', ]

    for permission in permissions_list:
        if user.has_perm(permission):
           return True

    return False

@user_passes_test(manage_access)
def my_view(request):
    #view code

如果您需要更复杂的东西(例如:权限列表因视图而异),我考虑编写自定义装饰器。