如何设置 Django的CMS 项目支持多个网站?
官方文档中没有提到这一点,邮件列表中只有有限的信息,但标题是“用于管理内容分层页面的Django应用程序,可能是多种语言和/或多个站点”。并通过 Django Sites Framework 已经内置支持,并且在管理页面中可以关联到不同的站点。
有关:
如何设置 Django的CMS 项目支持多个网站?
官方文档中没有提到这一点,邮件列表中只有有限的信息,但标题是“用于管理内容分层页面的Django应用程序,可能是多种语言和/或多个站点”。并通过 Django Sites Framework 已经内置支持,并且在管理页面中可以关联到不同的站点。
有关:
在Django-cms中有几个不同的选项来管理不同的网站(以及模板和页面内容)。
我最喜欢的可能是最简单的:
在我的virtualenv中,我有一个django-cms安装和一个包含我使用的所有模板的“项目”。
我有一个全局设置文件,每个网站只有一个文件,只导入所有全局设置并设置“SITE_ID”。
from base import *
SITE_ID = XXX
对于结构我通常有一个 settings
文件夹,一个空的 __init__.py
里面,一个 base.py
使用所有常见设置 - 包括django-cms设置,然后是不同的网站,例如。 site1.py
site2.py
(有时我的结构甚至稍微复杂一些也考虑到开发/生产,不同的机器等,但这里没有关系)。
我将每个网站作为一个不同的实例启动 - 我使用gunicorn也非常容易,每个端口都是不同的。
我有一个单独的nginx前面 server
我的每个网站的配置,以及每个网站的不同枪支。
server {
listen 80;
server_name example1.com www.example1.com;
...
location / {
proxy_pass http://localhost:PORT;
}
}
任何gunicorn实例都可以访问管理员,并且所有数据都在一个数据库中共享,但为简单起见
就这样!
当然,它可以与Apache,mod_wsgi和不同的虚拟主机类似地完成。
我实际上构建了我的文件夹,以便调用一个apps文件夹 themes
。每个主题实际上都是一个APP,虽然大多只包含 templates
和 static
文件夹,它被添加到INSTALLED_APPS。
这允许可爱的东西,例如不同主题之间的继承和/或覆盖。
也可以使用将从URL动态提取和设置SITE_ID的中间件。这允许有一个单独的实例......但我认为这个解决方案没有任何真正的优势,而是发现它是潜在的风险来源。