J'ai modifié le middleware multihost.py que j'ai trouvé au http://effbot.org/zone/django-multihost.htm pour définir les paramètres.SITE_ID de façon dynamique, mais j'ai quelques inquiétudes que je puisse avoir quitté la réservation.Sûr de modifier les paramètres.SITE_ID du middleware dans Django?
La plupart des exemples que j'ai trouvés pour l'hébergement de plusieurs domaines ont été configurés avec plusieurs fichiers settings.py codés en dur sur leur SITE_ID respectif. Est-ce que j'ai créé un correctif avec un défaut fatal ici? Est-ce que changer cette valeur dynamiquement me mord sur le 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)
Pour les curieux, c'est opérationnel jusqu'à présent, mais n'a pas résisté au trafic réel.
Aucune idée de savoir si cela fonctionnera, mais je me demande si l'utilisation de 'urlparse' serait préférable pour obtenir le nom d'hôte (http://docs.python.org/library/urlparse.html). –
Plus d'informations, ce code a été mis en place sur un site de 2 domaines depuis environ une semaine maintenant sans problèmes apparents. Assez faible trafic mais je pense que le concept tient. –