0

我正在使用 django-guardian 来处理对象权限。在我的 settings.py 中:

ANONYMOUS_USER_ID = -1

但是,当我尝试运行服务器时,我得到一个配置不正确的错误:

django.core.exceptions.ImproperlyConfigured: In order to use django-guardian's ObjectPermissionBackend authorization backend you have to configure ANONYMOUS_USER_ID at your settings module

我怀疑这可能是由于我from guardian.shortcuts import assign在 settings.py 的顶部执行的,但我不确定。注释掉导入会导致服务器启动成功,但尝试访问任何页面都会AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'提示设置完全有问题(也许没有正确找到它们?)。

4

2 回答 2

1

我刚刚确定,在遵循http://packages.python.org/django-guardian/configuration.html项目的配置说明后,项目与 Guardian 顺利运行(使用 Django 1.4)。

...并回答您的问题:

  1. 尽量避免在设置模块中导入东西。如果这样做,请绝对确保没有循环导入问题。实际上,您确实有这个问题。如果需要,您可以使用 *post_syncdb* 信号:(https://docs.djangoproject.com/en/dev/ref/signals/#post-syncdb)。但是,在您的情况下,它不应该是必需的,因为您已经说过删除该导入解决了运行命令的问题(因此设置模块assign无论如何都没有使用快捷方式)。

  2. ROOT_URLCONF绝对应该设置属性(如果您使用 Django 的内置命令(即django-admin.py startproject myproject)生成项目。如果它丢失,那么是的,您的配置已损坏。尝试将属性设置为类似'myproject.urls'(或您的主要网址所在的任何位置)和检查是否可以解决问题。

于 2012-11-07T22:01:22.560 回答
0

作为记录,我在上次正式发布时遇到了同样的问题(使用简单的 pip install django-guardian 安装)

当您从lukaszb 的 git 存储库安装版本时不会发生这种情况,我仔细检查了源代码

于 2013-12-03T18:50:15.293 回答