2010-05-24 81 views
8

我已經構建了一個Django站點,它將在活動時位於根處。現在它在IP地址上運行正常。出於測試目的,客戶端已經指向它的代理url,但url中有/ folder /路徑,因此沒有任何URL模式匹配。我把(/文件夾/路徑)?到所有的url模式,所以他們現在迴應,但所有的鏈接都被破壞了,因爲我使用{%url%}標籤,而url模式將匹配可選路徑,所以他們不會將其包含在該標籤中。Django:網站URL前綴

顯然,我可以在測試完成之前將硬編碼/文件夾/路徑導入到我的所有網址(包括所有網址),但有沒有更好的方法來做到這一點?

回答

5

您在部署應用程序時通過在Apache配置中正確設置WSGIScriptAlias(假設您使用mod_wsgi,您應該這麼做)來管理此操作。這傳遞給Django,然後Django自動爲所有URL反向查找加上正確的值。你不需要用前綴做任何手動操作。

+2

換句話說,要確保與後端的WSGIScriptAlias一起使用的URL掛載點與使用任何前端代理掛載的URL匹配。只要它們是相同的,那麼就前綴而言,應該都可以正常工作。 – 2010-05-24 23:15:21

+1

@Daniel nginx + uwsgi部署怎麼樣? – panchicore 2012-05-03 17:49:38

+0

@Daniel Roseman我在xampp的本地部署我的django應用程序,並且我有這個'WSGIScriptAlias/dj /「c:/xampp/htdocs/commons/mod.wsgi」'但是你是什麼似乎我必須在在我已經開發的應用程序中加入/ dj /。如果我理解你正確的dj應該自動添加前綴,但不是這種情況。我在錯什麼 – flexxxit 2013-05-28 19:58:51

1

對於此purpouse,我在settings.py中使用URL_PREFIX,並將其添加到每個包含在urls.py中的URL中。我也在MEDIA_URL的開頭添加它,以使所有圖像/ css/js鏈接正常工作。但我也想聽聽更棘手的解決方案?

0

如果WSGIScriptAlias不起作用或者由於某種原因無法設置它,請記住urlconf中的include()函數會將前綴添加到所有URL中。您可以創建一個包含當前root urlconf的urlconf並將其安裝在前綴處,然後將settings.py文件指向該urlconf。

聲明:自己沒有嘗試過,但它應該工作。