如何獲得幾個功能相似的站點,但外觀和內容不同 - 所有數據都會有所不同。Django同一實例上的多個站點
動態更改SITE_ID並編寫自己的模板加載程序& staticfile finder(相同的URL /靜態/對於不同的站點表示不同的類別)並將ForeignKey添加到Site for all?
或者還有其他方法嗎?
謝謝!
如何獲得幾個功能相似的站點,但外觀和內容不同 - 所有數據都會有所不同。Django同一實例上的多個站點
動態更改SITE_ID並編寫自己的模板加載程序& staticfile finder(相同的URL /靜態/對於不同的站點表示不同的類別)並將ForeignKey添加到Site for all?
或者還有其他方法嗎?
謝謝!
我做了類似自己的事情。
我有一個幫助器方法在我的視圖中獲取主機。
DEF和getHost(請求):
然後根據宿主我有我的靜態目錄破碎成2個位點 靜態/主機1/ 靜態/主機2/
上 返回request.META [ 'SERVER_NAME']我對模板也做了同樣的事情,我把它分成兩個目錄,並稱之爲appropriote!
在同一個實例上拆分Django站點是一項非常微妙的操作。首先,你必須記住你的模型。像FlatPages一樣,您的模型可能會在Sites表中包含ManyToManyField,以便您可以根據當前網站過濾內容(如果需要)。
關於模板和靜態數據,我喜歡馬克的答案,但你可以做不同的事情。 您可以將模板和靜態文件夾分成多個具有不同主題和模板配置的文件夾。 例如,你可以有隻有一套模板和兩個「主題」是這樣的:
templates
/normal_set
static
/themes
/blue
/red
您可以創建一個表卡列斯SiteConfiguration,具有OneToOneField到站點表。此配置表將包含模板文件夾的名稱和該站點的主題文件夾的名稱,以便您可以在站點之間共享屬性。 也許你可以在之後緩存,以避免太頻繁地觸碰數據庫。 也許,將這個建議與Mark的一個混合起來。
我假設你的用戶在每個站點都保持不變。
有2包專爲這個確切的使用情況:
Django的1.8+,有https://bitbucket.org/levit_scs/django-polla
如果您正在使用Django的是舊版本,你可以使用https://bitbucket.org/uysrc/django-dynamicsites/overview
即使雖然這個答案很晚,但我確實希望它能幫助人們在這個問題上磕磕碰碰