2016-07-26 4 views
0

Hier meine Session-Variable ist,Pop Wert aus Wörterbuch in Flask Sitzung gespeichert

session['data'] = json.loads(request.data.decode()) 
print(session.pop('data', None)) 

Druck sieht wie folgt aus:

{u'mark': u'all', u'chr': u'1A', u'distmin': 5, u'distmax': 10} 

Meine Frage ist, wie diese dict der Teilmenge,

print(session.pop('data["mark"]', None)) 

Dies funktioniert nicht, dies gibt None zurück.

Antwort

3

So funktionieren die Python-Mappings nicht. data["mark"] ist ein gültiger Schlüssel. Um auf verschachtelte Zuordnungen zugreifen zu können, müssen Sie die Schlüssel separat angeben.

session['data']['mark'] = 'spam' 

Der Schlüssel für pop verwendet wird, sollte das für __getitem__ entsprechen. Genauso wie Sie session['data["mark"]'] nicht verwenden, um auf das mit dem Schlüssel data verknüpfte Wörterbuch zuzugreifen, würden Sie Schlüssel nicht auf die gleiche Weise entfernen. Die gesuchte Syntax lautet

Markieren Sie die Sitzung als geändert, nachdem Sie ein verschachteltes Objekt wie dieses geändert haben. Die Sitzung kann dies nur automatisch für direkte Änderungen tun.

session.modified = True 
+0

Große Antwort! Vielen Dank :) – ramesh