我修改了我在http://effbot.org/zone/django-multihost.htm找到的multihost.py中间件来动态设置设置.SITE_ID,但有一些担心,我可能刚刚离开了预留。从Django的中间件安全地修改设置.SITE_ID?
我发现多个域托管的大多数示例都已经设置了多个settings.py文件,并将其硬编码为各自的SITE_ID。
我是否在这里创建了一个致命的缺陷修复程序?动态地改变这个值会让我对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)
由于好奇,这是运行到目前为止,但还没有站起来的实际交通。
不知道这是否可行,但我想知道是否使用'urlparse'会更好地获取主机名(http://docs.python.org/library/urlparse.html)。 – 2010-08-12 08:08:36
其他信息,这段代码已经在2个域名站点上存在了大约一个星期,现在没有明显的故障。交通相当低,但我认为这个概念是成立的。 – 2010-08-16 17:47:57