今天把在家调好的网站放到服务器上, 发现不能运行, 提示 ViewDoesNotExist 的异常错误. 一开始以为又是服务器上的文件访问权限问题, 但是 chmod 到 777 之后问题还是照旧, 而且在我本地用”manage.py runserver”运行还是没有问题. 于是乎, 去Python-Chinese的邮件列表寻找答案. 看到limodou有如下一说:
使用apache要复杂些,要把project的路径和它的父路径都加入sys.path中比较方便。而address.view的用法说明它是从project目录开始找的,所以要把project路径加入sys.path. 如果使用开发服务器,manage.py会自动将project的路径和它的父路径都加入sys.path中,而apache要自已来做。
这里已经说的很清楚了, 开发服务器的manage.py会在背后为你做一些事情, 而apache不会, 所以导致了我碰到的这个问题.
其实修改起来也很简单, 除了把路径加入sys.path之外, 还有一个方法就是在urls.py中, 把调用的方法名写成”项目名+模块名+方法名”的形式.
修改前代码: urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'view.index'),
(r'^s/$', 'view.search'),
)
修改后代码: urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'djangotest.view.index'),
(r'^s/$', 'djangotest.view.search'),
)
相关日志(Related):
你好,我想请教下,该怎么把路径加进sys.path中,还有我的一开始也是这个问题,后来我按照你的方法解决了,但是又出现了TemplateDoesNotExist at / 这个问题,我想还是加进sys.path中比较好。。。
我在httpd.conf加了下面这样还是不行,求指教。。。
PythonPath “['/home/Django','/home/Django/project']+sys.path”
Gothack
21 Dec 11 at 21:12