/ admin /中的Django ValueError

mja*_*jaz 2 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
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何帮助.

Joe*_*ska 5

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

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

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth'
)
Run Code Online (Sandbox Code Playgroud)

这就是我应该拥有的:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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