Django的sites framework支持單個Django安裝的多個網站託管。如何在本地測試Django的Sites框架
EDIT(下面是該系統的一個不正確的假設)
據我所知,中間件設置基於請求域的查找/緩存settings.SITE_ID值。
EndEdit中
但在本地測試的時候,我在http://127.0.0.1:8000/,不http://my-actual-domain.com/
如何在開發過程中我在本地查看我的不同的網站?
Django的sites framework支持單個Django安裝的多個網站託管。如何在本地測試Django的Sites框架
EDIT(下面是該系統的一個不正確的假設)
據我所知,中間件設置基於請求域的查找/緩存settings.SITE_ID值。
EndEdit中
但在本地測試的時候,我在http://127.0.0.1:8000/,不http://my-actual-domain.com/
如何在開發過程中我在本地查看我的不同的網站?
爲每個站點創建一個單獨的settings.py文件,包括適當的SITE_ID
設置。當然,您可以使用import
語句來共享文件之間的通用設置。
從現在開始運行Django開發服務器時,指定--settings
選項來告訴Django要運行的站點。
例如(假設你有兩個設置文件 - settings_first.py和settings_second.py):
manage.py runserver --settings settings_first
將運行第一個站點,並
manage.py runserver --settings settings_second
會給你一個訪問第二個網站。
您也可以同時運行它們,指定不同的端口:
manage.py runserver 8001 --settings settings_first
manage.py runserver 8002 --settings settings_second
上述命令(在兩個不同的控制檯運行)將使第一個網站入店http://127.0.0.1:8001/下,和http://127.0.0.1:8002/
也許你被文檔誤導了。你寫道:
我知道中間件根據請求域的查找/緩存來設置settings.SITE_ID值。
事實並非如此。它正好相反。 Django使用settings.SITE_ID值在數據庫中查找正確的Site對象。這將返回您的首選域和站點名稱。
該sites
應用程序旨在填補(在我看來)罕見的用例,你想有多個網站在背景中具有相同的數據庫。這使您可以在不同的網站上發佈相同的文章,但仍然具有某些模型僅適用於單個網站的靈活性。
對於開發多個項目(實際上並未使用站點框架),您不必指定任何特殊的項目。您可以使用默認SITE_ID
設置爲1
。爲了利用管理員的查看網站鏈接,您可以在開發數據庫中設置Site
的域名爲localhost:8000
。
如果要使用相同數據庫開發多個站點(並利用站點框架),則必須讓每個項目具有不同的SITE_ID
,但數據庫設置相同。開發機器上每個項目中SITE_ID
的值在大多數情況下與您的生產服務器相同。
謝謝格雷戈爾。我懷疑我很迷惑。我可能會創建中間件來完成Django已經在做的事情,並且當請求的域位於settings.DEVELOPMENT_SERVERS時,它會查找查詢字符串屬性「site = my-site-1.com」,如果請求爲: 。settings.DEVELOPMENT_SERVERS中的.META ['SERVER_NAME']: #查找並在會話中設置網站 – 2010-02-09 02:18:46
鏈接現已過期 - 我今天擁有的設施來解決這個問題發佈的Django dynamicsites。請修復它。 – 2017-01-23 10:30:09