Ste*_*ano 11 django django-cms
如何设置django-cms项目以支持多个网站?
官方文档中没有提到这一点,邮件列表中只有有限的信息,但标题是"用于管理内容的分层页面的Django应用程序,可能是多种语言和/或多个站点".并且通过Django Sites Framework已经内置了支持,并且在管理页面中可以与不同的站点相关联.
有关:
Ste*_*ano 10
在Django-cms中有一些不同的选项来管理不同的网站(以及模板和页面内容).
我最喜欢的可能是最简单的:
在我的virtualenv中,我有一个django-cms安装和一个包含我使用的所有模板的"项目".
我有一个全局设置文件加上每个网站只有一个导入所有全局设置并设置"SITE_ID"的文件.
from base import *
SITE_ID = XXX
Run Code Online (Sandbox Code Playgroud)
对于结构我通常有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
任何gunicorn实例都可以访问管理员,并且所有数据都在一个数据库中共享,但为简单起见
就这样!
当然,它可以与Apache,mod_wsgi和不同的虚拟主机类似地完成.
我实际上构建了我的文件夹以调用一个apps文件夹themes.每个主题实际上都是一个APP,虽然大多只包含templates和static文件夹,但它被添加到INSTALLED_APPS中.这允许可爱的东西,例如继承和/或不同主题之间的覆盖.
也可以使用将从URL动态提取和设置SITE_ID的中间件.这允许有一个单一的实例......但我没有看到这个解决方案有任何真正的优势,而是发现它是潜在的风险来源.
| 归档时间: |
|
| 查看次数: |
3782 次 |
| 最近记录: |