django应用程序适用于开发服务器,但我在Apache上获得404

时间:2011-01-07 04:20:41

标签: django

我认为同样的机制既适用于开发服务器,也适用于Apache作为我的Web服务器,但我目前非常困惑。

我可以在使用Django开发服务器时访问URL,如下所示

__http://devserver/my_application/

当我将我的Web服务器切换到Apache时,我收到所有URLs.py条目的Django 404错误。

尝试访问__http:// devserver /返回以下内容

Using the URLconf defined in antrum.urls, Django tried these URL patterns, in this order:
^my_application/$
^my_application/?page=(?P<page>\d+)
^my_application/new
^my_application/(?P<candidate_id>\d+)/$
^my_application/(?P<candidate_id>\d+)/update/$
^my_application/(?P<candidate_id>\d+)/delete/$
^my_application/search/$
^admin/doc/
^admin/
The current URL, , didn't match any of these.

尝试访问http://devserver/my_application/会产生以下输出

{'path': u'my_application/'}

我可能犯了一个蹩脚的错误但现在无法看到。我可能想要检查什么?

这是我的Apache配置

<Location "/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE project.settings
    PythonOption django.root /
    PythonDebug On
    PythonPath "['/home/user/','/home/user/project/'] + sys.path"
</Location>

<Location "/media/">
    SetHandler None
</Location>  

以下是我的发现:

  • 切换到manage.py runserver解决了我的问题
  • Apache Error.log没有条目
  • 当我为pythonpath设置环境变量并使用python CLI时,我可以访问我的模型,这也是恕我直言的离开python路径选项
  • __http:// devserver / my_application和__http:// devserver / my_appTYPO使用不同的{u'path':...}输出提供相同的错误消息

2 个答案:

答案 0 :(得分:1)

尝试使用mod_wsgi而不是modpython。如果您有相同的问题,那么修改您的视图,尤其是HttpResponse对象(mimetype参数)。无论如何在django 1.3发布后不再支持modpython,我认为最好永远离开modpython

答案 1 :(得分:1)

安装在网站的根目录时,请勿设置django.root变量。只应在安装在子URL的地方使用。