Django: request.session-Variablen bei parallelen runservern
Verfasst: Montag 21. März 2011, 10:49
Ich arbeite seit ein paar Jahren mit Python/Django und habe nun folgendes Phänomen:
auf einem lokalen Rechner laufen 2 verschiedene Projekte parallel mit den Portnummern 8000 und 8001, je mit einem eigenen runserver gestartet.
In den Templates ist eine Variable msg eingebaut, die ggf. Fehler anzeigen soll:
{% if msg %}
<h3 class="redink">{{ msg|linebreaksbr }}</h3>
{% endif %}
Geladen wird sie im Programm mit:
msg = u'...'
...
return render_to_response('....html',{
'msg': msg,...})
Je nach Steuerung soll aber dieses Template im Fehlerfall verlassen und zu einem übergeordneten Menu gesprungen werden. Um die Programmvariable msg nicht zu verlieren, rette ich sie vorher:
request.session['msg'] = msg
Und am Anfang der Menüroutine (oder anderer geeigneter Programme) lade ich sie am Anfang:
if 'msg' in request.session:
msg = request.session['msg']
else:
msg = u''
Das ist alles überhaupt kein Problem, aber wenn ich im Fehlerfall der 1. Anwendung in die 2. umswitche und dort eine Seite mit ebenfalls diesem Mechanismus betrete, wird mir dort die Fehlermeldung des 1. Projekts angezeigt.
Ist die Struktur request.session nicht eindeutig je runserver (Portnr.)? Python scheint lt. Taskliste mehrfach zu laufen.
Was kann man dagegen unternehmen? Ich habe schon erfolglos beide settings erweitert um
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
)
Ich arbeite mit Python 2.5 und Django 1.0 unter Windows XP, Phänomen tritt aber auch mit Python 2.6 unter Windows 7 auf.
Vielen Dank für etwaige Tipps
auf einem lokalen Rechner laufen 2 verschiedene Projekte parallel mit den Portnummern 8000 und 8001, je mit einem eigenen runserver gestartet.
In den Templates ist eine Variable msg eingebaut, die ggf. Fehler anzeigen soll:
{% if msg %}
<h3 class="redink">{{ msg|linebreaksbr }}</h3>
{% endif %}
Geladen wird sie im Programm mit:
msg = u'...'
...
return render_to_response('....html',{
'msg': msg,...})
Je nach Steuerung soll aber dieses Template im Fehlerfall verlassen und zu einem übergeordneten Menu gesprungen werden. Um die Programmvariable msg nicht zu verlieren, rette ich sie vorher:
request.session['msg'] = msg
Und am Anfang der Menüroutine (oder anderer geeigneter Programme) lade ich sie am Anfang:
if 'msg' in request.session:
msg = request.session['msg']
else:
msg = u''
Das ist alles überhaupt kein Problem, aber wenn ich im Fehlerfall der 1. Anwendung in die 2. umswitche und dort eine Seite mit ebenfalls diesem Mechanismus betrete, wird mir dort die Fehlermeldung des 1. Projekts angezeigt.
Ist die Struktur request.session nicht eindeutig je runserver (Portnr.)? Python scheint lt. Taskliste mehrfach zu laufen.
Was kann man dagegen unternehmen? Ich habe schon erfolglos beide settings erweitert um
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
)
Ich arbeite mit Python 2.5 und Django 1.0 unter Windows XP, Phänomen tritt aber auch mit Python 2.6 unter Windows 7 auf.
Vielen Dank für etwaige Tipps