如何为站点框架 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 站点中获取唯一用户?