2009-07-22 51 views
1

我目前在看Django的網站的文檔:如何使用相同的數據設置不同站點的Django項目?

http://docs.djangoproject.com/en/dev/ref/contrib/sites/#ref-contrib-sites

這也解釋瞭如何使用多個站點的內容相關聯。使用的例子是LJWorld.com和Lawrence.com。

Django項目結構對於上述項目是什麼樣的?在每個網站上自己的應用程序,例如:

project/ 
    manage.py 
    settings.py 
    urls.py 
    ljworld/ 
     models.py 
     views.py 
    lawrence/ 
     models.py 
     views.py 

如果ljworld有SITE_ID=1和勞倫斯SITE_ID=2,莫非SITE_ID變量在ljworld/settings.pylawrence/settings.py明確設置?

你如何運行ljworld或lawrence的開發服務器?

更新:

我用了兩個站點,在上面共享的內容。如果有n個不同的網站共享相同的內容,應該怎麼做?我真的需要在n臺不同的服務器上安裝n個不同的Django項目,全部連接到相同的數據庫服務器上嗎?

此外,如果我需要更改settings.py這應該會影響所有這些網站,手動更改每個文件將非常繁瑣。

回答

6

不,每個站點都不是一個應用程序;每個站點都是自己的項目。整個想法是有一個(完全或部分)共享內容的不同項目。所以,你可能有一個結構,如:

ljworld/ 
    manage.py 
    settings.py 
    urls.py 
    ljworld_specific_app1/ 
    ... 
lawrence/ 
    manage.py 
    settings.py 
    urls.py 
    lawrence_specific_app1/ 

您通常會使用兩臺Web服務器來服務項目 - 雖然通常都將指向同一個數據庫服務器。當然,您也可以在兩個項目之間共享應用程序 - 只需將它們保存在服務器的PYTHONPATH中。

編輯:當然

「兩個Web服務器」 並不一定意味着在兩個物理不同的服務器。他們很可能是在同一個Web服務器實例下運行的兩個虛擬主機 - 甚至可以將這兩個項目映射到同一虛擬主機下的兩個不同目錄。

對於共享設置,您可以使用與共享應用程序相同的技術。有一個global_settings模塊,其中包含PYTHONPATH某處可用的共享設置,並從每個settings.py中導入它。

如果你想要一些非常黑客的東西,你甚至可以放棄所有不同的項目,只使用一個,創建一箇中間件來改變設置。但我會建議反對它。

相關問題