django - 调试 Django 权限错字

标签 django django-authentication

如何调试 django 中的权限问题?

我使用这样的代码:

if request.user.has_perm('foo.bar'):

我怎么知道“foo.bar”中是否有拼写错误?

最佳答案

我找到了答案。只需修改(临时)backends.py 的代码:

--- django/contrib/auth/backends.py (Revision 17045)
+++ django/contrib/auth/backends.py (Arbeitskopie)
@@ -43,6 +43,9 @@
         return user_obj._perm_cache

     def has_perm(self, user_obj, perm):
+        all_perms=[u'%s.%s' % (ct, name) for ct, name in Permission.objects.values_list('content_type__app_label', 'codename')]
+        if not perm in all_perms:
+            raise Exception('Permission %s does not exist. foo permissions: %s' % (perm, [p for p in all_perms if 'foo' in p]))
         if not user_obj.is_active:
             return False
         return perm in self.get_all_permissions(user_obj)

关于django - 调试 Django 权限错字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729283/

相关文章:

python - Django 模型表单不保存

python - Django 值错误 : invalid literal for int() with base 10: ''

python - 如何在 Python/Django 中将 MP4 转换为具有多种音频和多种视频质量的 HLS?

django - 获取django用户后如何手动验证?

django - 是否可以在 Django 中创建我自己的 createsuperuser 命令?

python - 在 Django 中管理多个文件上传

python - 如何解决 Django 中的 UndefinedColumn 错误

Django auth.models.User 未经过身份验证,但存在于 auth 数据库中

python - AUTH_USER_MODEL 指尚未安装的型号

django - 使用 factoryboy 作为 django User 和 py.test