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

Django应用中用户拥有权限却无法访问页面的问题解决

问题解决步骤

核心原因:权限字符串格式错误

Django中权限的正确格式是 app_label.permission_codename,从你打印的权限对象 <Permission: elec_meter | client | Can add client> 可以看出,你的Client模型所属的app标签是elec_meter,而不是client。你之前用的client.add_client是错误的,导致权限检查不通过。

具体修改方案

  1. 修正装饰器中的权限字符串
    将原来的装饰器权限参数替换为包含正确app标签的格式:

    # 正确写法
    @permission_required("elec_meter.add_client", login_url="/login")
    def add_client(request):
        ...
    
    @permission_required("elec_meter.view_client", login_url="/login")
    def view_client(request):
        ...
    

    注意:你提供的view_client函数缩进有问题,要保证装饰器和函数定义对齐。

  2. 验证权限检查
    现在调用以下代码应该返回True:

    user.has_perm("elec_meter.add_client")
    user.has_perm("elec_meter.view_client")
    

额外检查项

  • 确认用户的权限确实已正确分配(从你打印的user_permissions来看是没问题的,但可以再核对下数据库中auth_permission表的content_type_id是否对应elec_meter应用下的Client模型)
  • 确保项目的MIDDLEWARE配置中包含django.contrib.auth.middleware.AuthenticationMiddleware,这是权限检查的基础中间件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:42:42