最近我偶然發現了一個問題,即使我已經解決了這個問題,我想聽聽您對正確/簡單/採用解決方案的看法。Webfaction apache + mod_wsgi + django配置問題
我正在開發使用Django + python的網站。當我使用「python manage.py runserver」在本地機器上運行它時,默認情況下本地地址爲http://127.0.0.1:8000/。
然而,生產服務器上我的應用程序有其他的網址,與路徑 - 像「http://server.name/myproj/」
我需要生成和使用固定的網址。如果我使用{%URL視圖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鏈路或通過一些變量與「主機名:端口/路徑」在模板
有更漂亮的方式以解決這個問題?謝謝。
更新:好的,這個問題似乎不是在Django中,而是以webfaction的方式來配置wsgi。應用程序與URL「hostname.com/myapp」 Apache配置包含以下行
WSGIScriptAlias//home/dreamiurg/webapps/pinfont/myproject.wsgi
所以,SCRIPT_NAME是空的,而我看到的唯一的解決辦法是去mod_python的或從根爲我的應用程序。有任何想法嗎?
那麼,它不是 - 至少不與webfaction託管。我使用mod_wsgi的和給定的一個以上urlpatterns的,下面的代碼 「從django.core.urlresolvers導入反向 永久=反向(‘myproj.myapp.views.index’)」 將返回「/」。 除此之外,{%url pinfont.label.views.index%}將給出相同的路徑「/」。 – 2010-04-28 13:13:17
謝謝你,我自己找到了問題的原因,但你真的幫助.wsgi解決方案。小修補程序 - 請在第4行將'os.environ'更改爲'environ'。 – 2010-04-28 15:54:10