Django在/admin/出现ValueError

2 投票
1 回答
4802 浏览
提问于 2025-04-15 16:09

我在一个运行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 个回答

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配置中所有类似元组的东西实际上都是元组,也就是说,如果它们只有一个值,后面仍然需要加一个逗号。

撰写回答