首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单个Django项目下的多个站点

问单个Django项目下的多个站点
EN

Stack Overflow用户
提问于 2010-07-30 15:33:57
回答 2查看 8.3K关注 0票数 6

在一个django项目下有多个站点是可能的并且是正确的吗?这样就会有全局共享的站点文件,urls文件以及所有站点的全局共享‘app’,以及一个单一的django项目下的所有站点的通用管理界面。每个站点可能都有自己的设置、urls和模板,它们将被覆盖或动态导入到父设置文件中。

谁能告诉我如何使用Python2.6 + Django 1.2.1 + Apache2.2 + mod_wsgi实现这一点?因为我对使用mod_wsgi时需要提供的虚拟主机有点困惑。

根据上面的要求,我计划将wsgi文件保存在django项目的主目录中,以便导入主设置,并且在主设置中,我计划使用Apache + mod_wsgi以这种方式导入所请求的站点设置dynamically.Is。敬请指教。

或

而不是全局django项目,我必须为导入全局设置和网址细节到站点特定的设置和url的全局共享模块。

我想更好地重用代码,而不是在每个站点中进行多余的更改。

敬请指教。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-30 17:03:09

是的,这是完全可能的。这些网站甚至可以共享数据。

sites框架实现了这一点-有关文档,请参阅此处:

https://docs.djangoproject.com/en/1.11/ref/contrib/sites/

票数 5
EN

Stack Overflow用户

发布于 2012-10-23 23:42:41

下面的方法和我做的一样。我从http://michal.karzynski.pl/blog/2010/10/19/run-multiple-websites-one-django-project/借的

基本上,您将在http.conf文件中为每个域创建一个虚拟主机条目。

代码语言:javascript
复制
# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
    ServerName example1.com

    WSGIDaemonProcess APPLICATION_NAME processes=5 python-path=/home/USERNAME/webapps/APPLICATION_NAME:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
    WSGIScriptAlias / /home/USERNAME/webapps/APPLICATION_NAME/domain1.wsgi
</VirtualHost>

<VirtualHost *>
    ServerName example2.com


    WSGIDaemonProcess APPLICATION_NAME_www processes=5 python-path=/home/USERNAME/webapps/APPLICATION_NAME:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
    WSGIScriptAlias / /home/USERNAME/webapps/APPLICATION_NAME/domain2.wsgi
</VirtualHost>

然后,您需要为每个域创建两个不同的wsgi文件,并将它们放入保存项目的目录中。WSGIScriptAlias是wsgi文件的路径,所以要确保它们是相同的……

示例Wsgi文件:

代码语言:javascript
复制
import os
import sys
from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'PROJECT_NAME.domain1_settings' # or PROJECT_NAME.domain2_settings
application = WSGIHandler()

然后你会想要创建两个额外的设置文件...所以你会有

代码语言:javascript
复制
settings.py
domain1_settings.py
domain2_settings.py

domain1_settings.py和domain2_settings.py将导入settings.py:

Domain1_settings.py示例:

代码语言:javascript
复制
from settings import *

SITE_ID = 1

ROOT_URLCONF = 'domain1_urls'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',

# other apps specific to this domain
)

最后,您需要创建两个单独的urls文件。

domain1_urls.py和domain2_urls.py

domain1_urls.py将是site_id 1的默认值,domain2_urls.py将是site_id 2的默认值。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3369486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档