模块“django.core.context_processors”未定义“auth”可调用请求处理器

时间:2011-09-19 11:26:14

标签: django

我有一个Django直播网站,我想对它进行某种维护,但是当我下载它并试图从我的本地机器打开它并且我的调试模式是真的 我遇到了这个错误:

ImproperlyConfigured at /

Module "django.core.context_processors" does not define a "auth" callable request processor

我正在使用Python 2.5

如果有任何帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:95)

看起来您已升级到Django 1.4或更高版本。

身份验证上下文处理器已从django.core.context_processors.auth移至django.contrib.auth.context_processors.auth。此举在Django 1.2中开始,django.core.context_processors.auth在Django 1.4中完全删除。

我建议您在开发和生产环境中运行相同版本的Django,以防止出现此类错误。

升级到Django 1.4时,您需要在设置文件中对TEMPLATE_CONTEXT_PROCESSORS进行以下更改:

# old
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
                               ...
)
# new
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
                               ...
)

迁移时,发布说明(1.21.31.4)对于捕获此类更改非常有用。

答案 1 :(得分:1)

首先检查你的Django版本:

进入您的应用并运行

$./manage.py shell
import django
django.get_version()

在Django> 1.4中,删除了以前弃用的标记设置DATABASE_ENGINE。 (像tic / toc-cycle这样的弃用/删除对于Django项目来说是典型的。)

我使用以下代码修复遗留脚本,由于某些原因必须保持过时...

    if not ((hasattr(settings, 'DATABASE_ENGINE') and (settings.DATABASES['default']['ENGINE'] or 'ENGINE' in [x for y in settings.DATABASES.itervalues() for x in y]))):
      try:
        setattr(settings, 'DATABASE_ENGINE', settings.DATABASES['default']['ENGINE'])
      except:
        raise Exception('No default ENGINE set in settings.DATABASES!')

希望这有帮助。