He modificado el middleware multihost.py que encontré en http://effbot.org/zone/django-multihost.htm para establecer las configuraciones.SITE_ID dinámicamente, pero tengo algunas preocupaciones de que puedo haber dejado la reserva.Seguro para modificar configuraciones.SITE_ID de middleware en Django?
La mayoría de los ejemplos que he encontrado para múltiples dominios se han configurado con múltiples archivos settings.py codificados en sus respectivos SITE_ID.
¿He creado una solución con un error fatal aquí? Va a cambiar este valor mordiéndome dinámicamente en el 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)
Para los curiosos esto está funcionando hasta el momento, pero no se ha resistido al tráfico real.
No tengo idea si eso funcionará, pero me pregunto si usar 'urlparse' sería mejor para obtener el nombre de host (http://docs.python.org/library/urlparse.html). –
Información adicional, este código ha estado en su lugar en un sitio de 2 dominios durante aproximadamente una semana sin fallas técnicas aparentes. El tráfico es bastante bajo, pero creo que el concepto es válido. –