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

Django用户权限逻辑解析与修复:管理员权限失效问题排查

Django权限逻辑条件失效原因分析

先看你写的第一个条件:if (request.user != comment.user) or (not request.user.is_superuser):
这个逻辑的核心问题是逻辑运算符用错了。你原本想阻止的是「既不是内容所有者,又不是超级管理员」的用户,但这里用了or,导致只要满足其中一个条件就会触发阻止:

  • 对于超级管理员来说,如果他不是这条评论的所有者,request.user != comment.user为真,整个or条件就成立,所以会被阻止编辑;
  • 只有当超级管理员同时也是评论所有者的时候,两个条件都不满足,才能编辑,这显然不符合需求。

再看正确的条件:if not (request.user.is_superuser or (request.user == blog.blog_author)):
这里用not包裹了「是超级管理员 或者 是内容所有者」的判断,意思是:当用户既不是超级管理员,也不是内容所有者的时候,才阻止编辑,完全匹配你需要的「所有者和管理员都能编辑」的逻辑。

其实你也可以把第一个条件改成if (request.user != comment.user) and (not request.user.is_superuser):——这个写法和正确条件是等价的,本质都是判断「用户既不是所有者也不是管理员」,这样就能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:45:56