已添加权限但has_perm方法仍返回False的技术咨询
Django用户权限已添加但Shell验证不生效的解决办法
重新获取用户实例
Django会缓存用户权限数据,在Shell中添加权限后,原来的user2对象仍保留旧的缓存数据。必须重新从数据库拉取用户:user2 = User.objects.get(id=user2.id) # 再次执行验证 user2.get_user_permissions() user2.has_perm('blog.add_post')区分用户直接权限与组权限
get_user_permissions()仅返回用户直接拥有的权限,如果权限是通过用户组添加的,要用get_all_permissions()查看所有权限(包含组权限):user2.get_all_permissions()核对权限字符串格式
确认权限字符串'blog.add_post'是否与实际权限匹配,可通过以下命令验证:from django.contrib.auth.models import Permission perm = Permission.objects.get(name='Can add post') print(f"{perm.content_type.app_label}.{perm.codename}") # 输出应为blog.add_post检查用户激活状态
若用户is_active为False,has_perm会直接返回False,执行以下命令确认:print(user2.is_active)
内容的提问来源于stack exchange,提问作者kubaSpolsky
相关产品推荐
相关产品推荐

