我修改了我在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