【问题标题】:Check if user has one of the listed permissions in Django检查用户是否具有 Django 中列出的权限之一
【发布时间】:2017-01-19 11:40:40
【问题描述】:

我有以下问题。有一个权限列表(假设“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 and perm2) 或 perm3

【问题讨论】:

    标签: python django permissions


    【解决方案1】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2011-02-26
      • 2020-11-23
      相关资源
      最近更新 更多