我在生产中的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
之前有没有遇到过这个?我完全不知道如何解决这个问题。
感谢您的帮助。
答案 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配置中的所有类似元组的东西都是元组,这意味着如果它们只有一个值,它们仍然需要一个尾随逗号。