我已经修改了在http://effbot.org/zone/django-multihost.htm中找到的 multihost.py 中间件,以动态设置 settings.SITE_ID,但有些担心我可能刚刚离开预订。
我为多域托管找到的大多数示例都是使用硬编码到各自 SITE_ID 的多个 settings.py 文件设置的。
我是否在这里创建了具有致命缺陷的修复程序?将动态更改此值会在 a** 上咬我。
from django.conf import settings
from django.contrib.sites.models import Site
class MultiHostMiddleware:
def process_request(self, request):
try:
host_raw = request.META["HTTP_HOST"]
colon = host_raw.find(':')
if colon > -1:
host = host_raw[0:colon]
else:
host = host_raw
s = Site.objects.get(domain=host)
if s:
settings.SITE_ID = s.id
except KeyError:
pass # use default urlconf (settings.ROOT_URLCONF)
对于好奇的人来说,到目前为止它已经启动并运行,但还没有经受住实际的流量。