检查用户是否具有Django中列出的权限之一

时间:2017-01-19 11:40:40

标签: python django permissions

我有以下问题。有一个权限列表(假设'a'到'z')。每个用户都拥有这些权限的子集。

假设我们有另一个清单,

perms_list = [a, c, d]

我想检查用户是否至少拥有perms_list中的一个权限。

 user.has_perms(perms_list)

检查用户是否具有所有权限,因此,我无法使用此权限。 (我也不能使用has_module_perms,因为我的情况下的权限有相同的模块)

另一种方法是将其置于for循环中

for p in perms_list:
    if user.has_perm(p):
        # do_something

有更有效的方法吗?

作为这个问题的扩展,是否有可能采用一般化的方法来做到这一点?例如,用户应具有(perm1和perm2)或perm3

1 个答案:

答案 0 :(得分:2)

if set(user.get_all_permissions()) & set(perms_list):
  pass

用于扩展程序

a=[53,6]
b=[[53],[2,4,5]]
if any((set(x).issubset(a)) for x in b):
    print(23)