gpt4 book ai didi

多个网站的 Django-cms

转载 作者:行者123 更新时间:2023-12-04 02:10:01 25 4
gpt4 key购买 nike

如何设置 django-cms项目支持多个网站?

官方文档中没有提到这个,邮件列表中只有有限的信息,但它在标题“用于管理分层内容页面的 Django 应用程序,可能以多种语言和/或在多个站点上”。并通过 Django Sites Framework已经内置了支持,并且在管理页面中可以关联到不同的站点。

有关的:

Django-CMS: Multiple domains on same project

最佳答案

在 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我的每个网站的配置,每个都指向不同的 gunicorn。
server {
listen 80;
server_name example1.com www.example1.com;
...
location / {
proxy_pass http://localhost:PORT;
}

}

任何 gunicorn 实例都可以访问 admin,所有数据都在一个数据库中共享,但为了简单起见

就这样!

当然,同样可以用 Apache、mod_wsgi 和不同的虚拟主机来完成。

先进的

主题

我实际上将我的文件夹结构化为一个名为 themes 的应用程序文件夹。 .每个主题实际上是一个应用程序,尽管大多数只包含 templatesstatic文件夹,并将其添加到 INSTALLED_APPS。
这允许可爱的东西,例如继承和/或不同主题之间的覆盖。

动态 SITE_ID

也可以使用中间件从 URL 中动态提取和设置 SITE_ID。这允许有一个单一的实例......但我认为这个解决方案没有任何真正的优势,而是发现它是一个潜在的风险来源。

关于多个网站的 Django-cms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com