是否可以使用一个Django实例运行几个不相关的站点?

时间:2012-11-18 01:37:55

标签: django

每个站点都应该有自己的域,数据库,settings.py,urls.py,views.py等。据我所知,这是不可能的,但我不太确定。

编辑:jdi建议使用不同的应用程序使用不同的设置文件。你能解释一下,怎么做? 另外一个问题是我使用Webfaction并在选择现有的Django webapp后收到以下错误:

  

此网站,路径和帐户的网站应用已存在

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

1 个答案:

答案 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不是为此而设计的。它旨在让您通过站点框架在同一项目上为不同的站点运行多个进程。