【发布时间】:2017-06-15 13:07:11
【问题描述】:
我已将多个站点定义为站点框架建议的文档。
我知道,如果我要运行我的应用程序的多个实例,每个实例都有不同的设置文件(不同的 SITE_ID),Django 将始终知道要使用哪个站点。
我试图做的是运行一个实例,其中有多个站点可用,并且应该根据站点的当前 url 选择正确的站点。
网站documentation 声明:
SITE_ID 设置指定站点对象的数据库 ID 与该特定设置文件相关联。如果设置是 省略时,get_current_site() 函数将尝试通过将域与主机名进行比较来获取当前站点 request.get_host() 方法。
所以我试图从我的 settings.py 中删除 SITE_ID,并希望 Django 会检查域以找到当前站点,如上所述,但是这失败了,并出现以下异常:
You're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting or pass a request to Site.objects.get_current() to fix this error.
因此,尽管文档另有建议,但此设置似乎不可省略
我知道,当没有可用于查找当前站点的请求对象时,像这样使用站点框架会导致问题,但这在我的应用程序上下文中应该不是问题。
是否可以通过仅检查应用程序的当前域来使用站点框架而无需在设置文件中硬编码 SITE_ID?
我将 Django 版本 1.9.9 与 Python 3.4.3 一起使用
【问题讨论】:
标签: python django django-sites