每个站点都应该有自己的域,数据库,settings.py,urls.py,views.py等。据我所知,这是不可能的,但我不太确定。
编辑:jdi建议使用不同的应用程序使用不同的设置文件。你能解释一下,怎么做? 另外一个问题是我使用Webfaction并在选择现有的Django webapp后收到以下错误:
此网站,路径和帐户的网站应用已存在
所以我需要知道,它是Django或Webfaction的限制。 Django的版本是1.3
答案 0 :(得分: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不是为此而设计的。它旨在让您通过站点框架在同一项目上为不同的站点运行多个进程。