【发布时间】:2011-02-13 08:03:05
【问题描述】:
我最近偶然发现的一个问题,即使我解决了它,我还是想听听您对正确/简单/采用的解决方案的意见。
我正在使用 Django + python 开发网站。当我使用“python manage.py runserver”在本地机器上运行它时,本地地址默认为http://127.0.0.1:8000/。
但是,在生产服务器上,我的应用有其他 url,带有路径 - 例如“http://server.name/myproj/”
我需要生成和使用永久网址。如果我使用 {% url view params %},我会得到相对于 / 的路径,因为我的 urls.py 包含这个
urlpatterns = patterns('',
(r'^(\d+)?$', 'myproj.myapp.views.index'),
(r'^img/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/img' }),
(r'^css/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/css' }),
)
到目前为止,我看到了 2 个解决方案:
- 修改 urls.py,包括 '/myproj/' 以防生产运行
- 使用
request.build_absolute_uri()在views.py 中创建链接或在模板中使用'hostname:port/path' 传递一些变量
有没有更漂亮的方法来处理这个问题?谢谢。
更新:嗯,问题似乎不在 django 上,而在 webfaction 配置 wsgi 的方式上。 URL 为“hostname.com/myapp”的应用程序的 Apache 配置包含以下行
WSGIScriptAlias / /home/dreamiurg/webapps/pinfont/myproject.wsgi
所以,SCRIPT_NAME 是空的,我看到的唯一解决方案是访问 mod_python 或从 root 服务我的应用程序。有什么想法吗?
【问题讨论】:
标签: python django url production-environment