In PyLucid nutzte ich ja intensiv das Site Framework um mehrere Seiten mit einer Installation zu beantworten, die alle auf die selben Datenbank Daten zugreifen.
Doch ich hab mir überlegt, das es doch schön wäre, wenn man nicht jeweils eine Instanz pro SITE_ID erstellen müßte, sondern per Middleware dynamisch die SITE_ID zu setzten.
Dann müßte man nur eine neue Domain in die SITE-Tabelle eintragen und gut. Die Middleware schaut welche aktuelle Domain genutzt wird und setzt die SITE_ID...
Was meint ihr?
Natürlich ist es nicht so toll, die SITE_ID in der settings dynamisch zu ändern. Vielleicht könnte man es ja so machen, das man im settings Objekt die statische SITE_ID durch eine Funktion ersetzt?
EDIT: Hab dazu ein paar Sachen gefunden:
https://bitbucket.org/uysrc/django-dyna ... s/overview
http://stackoverflow.com/questions/5583 ... -good-idea
https://code.djangoproject.com/ticket/4438
https://groups.google.com/group/django- ... 92c72ed59/
https://groups.google.com/group/django- ... de7944de3/
[Django] SITE_ID dynamisch in middleware setzten?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab mal angefangen: https://github.com/jedie/django-tools/b ... micSite.py
Ziel ist es, das ein Zugriff über Site.objects.get_current() oder über settings.SITE_ID überall funktioniert.
Erste Tests funktionieren. Aber über DynamicSiteId() bin ich noch nicht so recht glücklich.
Verbesserungsvorschläge ?
Ziel ist es, das ein Zugriff über Site.objects.get_current() oder über settings.SITE_ID überall funktioniert.
Erste Tests funktionieren. Aber über DynamicSiteId() bin ich noch nicht so recht glücklich.
Verbesserungsvorschläge ?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So, hab nun DynamicSiteMiddleware im praktischen Einsatz und sieht so aus, das es gut funktioniert 
Ist in der neuen django-tools v0.20.0 enthalten: http://pypi.python.org/pypi/django-tools/

Ist in der neuen django-tools v0.20.0 enthalten: http://pypi.python.org/pypi/django-tools/
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Habe nun die Sache noch ein wenig erweitert: Nun kann man "domain name aliases" angeben. Einmal als normaler String z.b.: "neuer_server.foobar.tld" oder als regex: ".*?\foobar\.tld"
Ist ganz nett, wenn man einen neuer Server hat kann man so vorgehen:
Dump vom alten einspielen.
sub-domains einrichten und auf neuen Server IP zeigen lassen
alias einrichten, damit die sub-domains nicht auf "fallback" SITE_ID zurück fallen, sondern der richtigen Seite zugewiesen werden...
Ich hab noch unittest hinzugefügt: https://github.com/jedie/django-tools/b ... e/tests.py
Damit Änderungen auch im Multi-Threaded Umfeld funktionieren, nutzte ich wieder https://github.com/jedie/django-tools/b ... c_cache.py
Mehr Info, zu Dynamic SITE_ID: https://github.com/jedie/django-tools/b ... DME.creole
Ist ganz nett, wenn man einen neuer Server hat kann man so vorgehen:
Dump vom alten einspielen.
sub-domains einrichten und auf neuen Server IP zeigen lassen
alias einrichten, damit die sub-domains nicht auf "fallback" SITE_ID zurück fallen, sondern der richtigen Seite zugewiesen werden...
Ich hab noch unittest hinzugefügt: https://github.com/jedie/django-tools/b ... e/tests.py
Damit Änderungen auch im Multi-Threaded Umfeld funktionieren, nutzte ich wieder https://github.com/jedie/django-tools/b ... c_cache.py
Mehr Info, zu Dynamic SITE_ID: https://github.com/jedie/django-tools/b ... DME.creole