You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django/Django Guardian中检测用户拥有任一权限的Pythonic实现方式

Django/Django Guardian 检测用户是否拥有任一权限的Pythonic写法

在Django和Django Guardian框架中,检测权限的基础用法已经很便捷:

  • 检测单个权限:user.has_perm('app.can_eat_pizzas')
  • 检测用户是否拥有全部指定权限:user.has_perms(('app.add_student', 'app.can_deliver_pizzas'))

如果要检测用户是否拥有任一指定权限,最符合Python风格的写法是利用any()函数配合生成器表达式,替代繁琐的or串联写法:

any(user.has_perm(perm) for perm in ('app.add_student', 'app.can_deliver_pizzas'))

这种写法不仅简洁,当需要检测的权限数量较多时,扩展性比逐个写or要好得多。如果需要在多个地方复用这个逻辑,还可以封装成一个简单的工具函数:

def has_any_perm(user, perms):
    return any(user.has_perm(perm) for perm in perms)

# 调用示例
has_any_perm(user, ('app.add_student', 'app.can_deliver_pizzas'))

内容的提问来源于stack exchange,提问作者alias51

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:20:28