0

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

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

具有此站点、路径和帐户的站点应用程序已存在

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

4

1 回答 1

3

此项目结构适用于 Django 1.4,但概念保持不变

您可以完成所有这些操作,而无需使用单个流程。为您的项目创建一个 virtualenv,它可以存储您需要的每个库的共享集。然后为每个站点创建不同的设置文件,每个站点加载不同的 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/

Either way you do it, I don't think it is necessary to think about trying to get them all to run under the same single process. Django isn't designed to do that. It is designed to let you run multiple processes on the same project, for different sites, via the sites framework.

于 2012-11-18T02:40:17.313 回答