2011-03-11 53 views
6

我打算將Django用於多站點項目,其中每個站點都是獨立的,但會在所有站點中共享一些模型。單一安裝,多個域和應用程序?

我想知道是否有一種方法可以讓每個Django「應用」都是自己的網站,並且具有唯一的域名,並且仍然允許每個網站訪問包含用戶帳戶,配置文件等一些模型的通用應用。

的計劃是允許在每個站點的單點登錄,通過公共應用程序共享帳號及密碼,並創建的Cookie在每個站點,一旦用戶登錄。

我知道Django的有一個「點」功能,但我不確定這是否足夠強大以滿足我的需求。

任何人都可以推薦一種方法來做到這一點,或指向我可能有幫助的任何文章?

UPDATE

只是想知道,這將通過Apache是​​可能的,可能還有一些修改的urls.py能夠指向特定站點的URL結構呢?

例如,可以說主站點是mainsite.com,我希望其中一個域指向mainsite.com/secondarysite,其中secondarysite是同一實例內的django應用程序,並且具有apache掩碼事實secondarysite.com域名實際上是指向不同的位置?

回答

6

Re。您的更新:您不需要像這樣僞造URL結構,除非您還想讓mainsite.com/secondarysite等網址直接提供給用戶。

我假設您使用的是name-based virtual hosting。一種簡單但非常靈活的方法是,每個<VirtualHost>指令通過通常的mod_wsgi配置指令調用不同的wsgi腳本,然後每個wsgi腳本可以將os.environ['DJANGO_SETTINGS_MODULE']指向不同的設置文件。

這些設置文件中的每一個都可以具有不同的ROOT_URLCONF,因此,如果需要,您可以在不同路徑上配置視圖。利用include機制。

如果您希望兩個域都使用同一個數據庫,那麼只需要兩個設置文件從第三個文件加載數據庫配置,例如。 settings_shared.py。或者,如果您想將某些模型路由到共享數據庫,而其他模型則不是,請參閱that's possible too。這很容易想象怎麼會被配置爲每個域:

from settings_shared import DATABASES_SHARED 
DATABASES = DATABASES_SHARED.copy() 
DATABASES.update({ ... }) 

這種方法需要配置URL和數據庫爲每個域的照顧。 但它沒有照顧單點登錄。

對於SSO部分,它實際上取決於什麼樣的你想要的用戶體驗多少時間,你有;)

嘗試搜索「Django的SSO」。這裏有很多的相關的問題,如: Implementing Single Sign On (SSO) using DjangoHow to build a secure Django single signon between different sites?Django + Google SSO openidIntegrating Django and .Net applications using Single Sign On (SSO)(Django) Sharing authentication across two sites that are on different domains

0

我認爲this guy談到這一點。

+0

Link是死了,唉。 – mrooney 2013-06-11 22:05:29

+0

@mrooney修復它,thx – 2013-06-11 23:06:42

相關問題