/ admin /中的Django ValueError

时间:2009-11-19 03:57:12

标签: python django django-admin

我在生产中的Red Hat Linux机器上运行带有mod_python的Django。不久之前,由于我不知道的原因,管理员停止工作,抛出500错误。错误如下:

ValueError at /admin/
Empty module name
Request Method: GET
Exception Type: ValueError
Exception Value: 
Empty module name
Exception Location: /usr/local/lib/python2.6/site-packages/django/utils/importlib.py in import_module, line 35
Python Executable: /usr/bin/python
Python Version: 2.6.2

之前有没有遇到过这个?我完全不知道如何解决这个问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

我只是在调试这个问题。当Django试图设置模板上下文处理器时出现错误,根本原因是一个应该是元组但实际上是字符串的定义。

这就是我在配置文件中的内容:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth'
)

这就是我应该拥有的:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
)

如果没有尾随逗号,Python会将变量的值视为字符串。因此,Django代码看起来像这样:

for path in settings.TEMPLATE_CONTEXT_PROCESSORS:
    i = path.rfind('.')
    module,attr = path[:i],path[i+1:]

'path'的第一个值是'd',而不是'django.core.context_processors.auth'。这导致'i'的值为-1,因此'module'的值为空。

确保Django配置中的所有类似元组的东西都是元组,这意味着如果它们只有一个值,它们仍然需要一个尾随逗号。