Django 1.0.2 mod_python 方式报 TypeError 的解决方法

尝试用 Django 写了一个简单的企业站,部署过程中出了不少问题,不过还好都一一解决了。

“激动不已”的看到了首页,长出一口气:“总不会再出什么其他问题了吧!”随手点了一个内部链接:
—————————————————

TypeError at about

'NoneType' object is not iterable

—————————————————
这回可晕倒了,怎么会有这样一个错误?
接着往下看,发现错误是由于丢失了一个反斜线引起的:

Request Method: GET
Request URL: http://www.i-fang.comabout
Exception Type: TypeError
Exception Value:
'NoneType' object is not iterable
Exception Location: /usr/lib/python2.5/site-packages/django/core/handlers/base.py in get_response, line 77
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: [‘/home/www/www.i-fang.com/’, ‘/usr/lib/python25.zip’, ‘/usr/lib/python2.5’, ‘/usr/lib/python2.5/plat-linux2’, ‘/usr/lib/python2.5/lib-tk’, ‘/usr/lib/python2.5/lib-dynload’, ‘/usr/local/lib/python2.5/site-packages’, ‘/usr/lib/python2.5/site-packages’, ‘/var/lib/python-support/python2.5’]
Server time: Tue, 5 May 2009 10:25:17 +0800

在 Request URL 中域名和路径中间的反斜线丢失了。
是 urls.py 配置的问题?检查、试验……不是!
是 apache 配置的问题?检查、试验……还不是!
所有的内容跟 Django 手册上的完全一致,到底是怎么回事呢?
看到这个邮件列表的内容,才明白,有时手册是不能随便抄的:
—————————————————
Take a look at the django.root PythonOption described here:

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from…

Are you using that option? If, yes, remove that option entirely and
try again.
—————————————————

去掉了 apache 配置文件中的“PythonOption django.root /”,重启 apache 后,一切访问正常了。

Leave a comment

Your email address will not be published. Required fields are marked *