如何为站点框架 django 设置多个 settings.py?

Posted

技术标签:

【中文标题】如何为站点框架 django 设置多个 settings.py?【英文标题】:How to set multiple settings.py for sites framework django? 【发布时间】:2017-03-31 14:54:09 【问题描述】:

我正在尝试建立多个具有相同基础的网站。浏览时,我知道 Django 有我可以使用的站点框架。

我不知道如何使用站点 ID 设置多个 settings.py 文件。有什么想法吗?

提前致谢:)

【问题讨论】:

我关注了这份文档docs.djangoproject.com/en/1.10/ref/contrib/sites。 【参考方案1】:

你可以有多个设置文件,例如develop.py和production.py 脚步 1.在项目里面创建一个settings文件夹 2.将所有设置文件添加到该文件夹 3 在运行服务器时

./manage.py runserver --settings=project_name.settings.required_settingfile

例如:./manage.py runserver --settings=myproject.settings.develop

【讨论】:

感谢您的快速提示。有什么方法可以在 wsgi 上实现。我有一个 apache2 服务器 import socket hostname = socket.gethostname() 根据主机名我们可以在wsgi中选择需要的设置文件。 好的,谢谢。只是一个疑问,那么为什么我们有设置文件的站点 ID。我认为 django 可以处理它 对不起,我不知道 site_id。让我在这里检查并发布【参考方案2】:

要从同一个 Django 实例为多个站点提供服务,您不需要多个 settings.py 文件。

一个简单的方法是从站点框架中省略SITE_ID 设置。然后包括Sites framework middleware:

'django.contrib.sites.middleware.CurrentSiteMiddleware'

这会在每次请求时自动将request 对象传递给Site.objects.get_current()。它还允许您的 Django 应用程序通过request.site 检测当前站点。

您需要确保使用您的 nginx 或 apache 实例设置多个虚拟主机,以将每个站点的流量路由到您的服务器。

【讨论】:

以上是关于如何为站点框架 django 设置多个 settings.py?的主要内容,如果未能解决你的问题,请参考以下文章

如何在由“站点”框架提供支持的多个 Django 站点中获取唯一用户?

如何为 django 驱动的 flash 站点的小型托管公司配置服务器?

Django 如何构建依赖于站点的 URL?

Apache:如何为一个ServerName拥有多个站点?

如何为一个站点使用多个网站图标

通过 Gunicorn/Nginx 使用 Django 的站点框架运行多个站点