【发布时间】:2011-01-07 04:20:41
【问题描述】:
我认为开发服务器和 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': ...} 输出不同
【问题讨论】:
-
error.log 看起来很干净 >> [Thu Jan 06 19:48:52 2011] [notice] mod_python: using mutex_directory /tmp [Thu Jan 06 19:48:52 2011] [notice] Apache /2.2.16 (Ubuntu) mod_python/3.3.1 Python/2.6.6 已配置——恢复正常操作
-
access.log 看起来也很干净,我看到了我的 GET 请求
-
这完全发生在 django 级别。我怀疑 urls.py 或我的 pythonpath。到目前为止没有运气......
-
我怀疑这发生在 Django 级别,因为它与开发服务器一起工作正常。你的 Apache 配置是什么样的?
-
"切换到 manage.py runserver 解决了我的问题" 什么?你不能在生产中运行它。那么它是如何成为“解决方案”的呢?请非常具体地说明您认为这“解决”了您的问题的原因。
标签: django