2012-11-18 66 views
0

每個網站都應該有自己的域名,數據庫,settings.py,urls.py,views.py等等。據我所知,這是不可能的,但我不太確定。是否可以使用一個Django實例運行多個不相關的站點?

編輯:jdi建議使用不同的應用程序使用不同的設置文件。你能解釋一下,怎麼做? 另外一個問題是,我使用Webfaction並選擇現有的Django Web應用程序後收到以下錯誤:

Site app with this Site, Path and Account already exists

所以我需要知道的,是Django的或Webfaction的限制。 的Django的版本是1.3

+0

「_one Django instance_」是否代表一個代碼庫(或_project_),或者說是一個_process_/_thread_? – Tadeck

+0

我的意思是一個過程。 – DSblizzard

+0

你能解釋一下你爲什麼要這樣做嗎?有沒有直接的方法來做到這一點,也沒有明顯的理由想要。 – jdi

回答

3

這個項目結構是Django的1.4,但其中的概念保持不變

你可以做所有這一切,只是不能與一個單一的過程。爲您的項目創建一個virtualenv,它可以存儲您需要的每個lib的共享集。然後創建爲每個站點不同的設置文件,其中每個加載不同的Django的應用程序,全部位於項目內:

djangoProject 
|- bin/ 
|- include/ 
|- lib/ 
|- manage.py 
|- djangoProject/ 
    |- settings_site1.py 
    |- settings_site2.py 
    |- settings_site3.py 
    |- wsgi_site1.py 
    |- wsgi_site2.py 
    |- wsgi_site3.py 
|- site1_app/ 
    |- models.py 
    |- views.py 
    |- urls.py 
|- site2_app/ 
    |- models.py 
    |- views.py 
    |- urls.py 
|- site3_app/ 
    |- models.py 
    |- views.py 
    |- urls.py 

settings_site1.py(例如)

... 
# or you could make multiple urls_siteX.py files in the root 
ROOT_URLCONF = 'djangoProject.site1_app.urls' 
... 
INSTALLED_APPS = (
    ... 
    'djangoProject.site1_app' 
) 

wsgi_site1.py(例如)

... 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoProject.settings_site") 
... 

但是很坦白......所有這些都更加簡單如果你只是用多個django項目創建一個virtualenv就完成了。然後,你不必多帶分離您的應用程序:

projectEnv 
|- bin/ 
|- include/ 
|- lib/ 
|- project1/ 
    |- manage.py 
    |- project1/ 
|- project2/ 
    |- manage.py 
    |- project2/ 
|- project3/ 
    |- manage.py 
    |- project3/ 

你做到這一點無論哪種方式,我不認爲有必要想想試圖讓他們都到同一個進程中運行。 Django的設計目的並非如此。它旨在讓您通過網站框架在同一項目上針對不同站點運行多個流程。

相關問題