2009-11-19 51 views
2

我正在使用mod_python在生产中的Red Hat Linux机器上运行Django。前一段时间,由于我未知的原因,管理员停止工作,抛出500错误。错误如下:Django ValueError at/admin/

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

- 访问/ admin /或其子页面时是否发生错误值? - 您是否已将任何新数据输入到管理员应用程序中? (也许从使用python脚本导入的数据)? - 你在用什么数据库? - 你可以将整个回溯粘贴到djangosnippets或类似的东西 – ismail

+0

当我访问/ admin /时发生。管理面板没有添加任何新内容。数据库是MySQL。我会发布回溯。 – mjaz

回答

5

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

这是我在我的配置文件:

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

这是我应该有:

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

如果没有后面的逗号,Python的对待变量a的值串。因此,Django的代码看起来是这样的:

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

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

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