Ayarları dinamik olarak ayarlamak için http://effbot.org/zone/django-multihost.htm adresinde bulduğum multihost.py ara katmanını dinamik olarak değiştirdim, ancak rezervasyondan yeni çıkmış olabileceğime dair bazı endişelerim var.Django'da middleware'den settings.SITE_ID dosyasını değiştirmek için güvenli misiniz?
Birden çok etki alanı barındırma için bulduğum çoğu örnek, ilgili SITE_ID'lerine kodlanmış birden çok settings.py dosyasıyla kuruldu.
Burada ölümcül bir kusur ile bir düzeltme oluşturdunuz mu? Bu değerin değişmesi beni dinamik olarak ısırıyor.
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)
Merak için, bu şimdiye kadar çalışıyor ve çalışıyor, ancak gerçek trafiğe çıkmadı.
Bunun işe yarayıp yaramadığına dair bir fikir yok, ama 'urlparse' kullanmanın ana bilgisayar adını almak için daha iyi olup olmayacağını merak ediyorum (http://docs.python.org/library/urlparse.html). –
Ek bilgi, bu kod yaklaşık bir hafta boyunca 2 etki alanı sitesinde yer aldı ve görünür bir hata oluşmadı. Oldukça alçak trafik ama kavramın geçerli olduğunu düşünüyorum. –