Ich möchte eine Python-Liste in meiner Sitzungsvariablen speichern und sie bei nachfolgenden Aufrufe bearbeiten. Ich habe gerade diese (in einer Ansicht):Sitzungsvariable in Django bearbeiten
if 'x' not in request.session:
request.session['x'] = []
request.session['x'].append('test')
Dies funktioniert nur auf dem ersten Versuch, das heißt die Sitzung tatsächlich ['test']
unter dict Schlüsseln 'x'
nach dem ersten Mal dieser Ansicht aufgerufen wird, enthalten wird. Wenn ich dies jedoch ein zweites Mal versuche, wird die Liste aktualisiert (wie ich beim Debuggen sehen kann), aber der Wert wird nicht beibehalten, wie durch das Debuggen nachfolgender Aufrufe belegt wird: der Wert bleibt ['test']
langfristig, anstatt zu werden ['test','test']
.
Ich habe den folgenden Schritt als Workaround gefunden, aber ich bin mir nicht sicher, ob ich versuchen sollte, es zu umgehen: umgeht dieser Code eine vernünftige Einschränkung von Django auferlegt?
temp_var = request.session['x']
temp_var.append('test')
request.session['x'] = temp_var
Es sieht so aus, als hätte ich die Dokumente ein bisschen weiter lesen sollen: https://docs.djangoproject.com/en/1.11/topics/http/sessions/#when-sessions-are-saved – blagae