存储在Flask会话中的字典的弹出值

时间:2016-07-26 17:38:55

标签: python session flask

这是我的会话变量

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

打印如下:

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

我的问题是,如何对此词典进行子集化,

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

这不起作用,返回None

1 个答案:

答案 0 :(得分:3)

这不是Python的映射是如何工作的。 data["mark"]是有效密钥。要访问嵌套映射,您需要单独指定密钥。

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

pop使用的密钥应与__getitem__的密钥相匹配。就像您不使用session['data["mark"]']访问与data键相关联的词典一样,您也不会以相同的方式删除键。您正在寻找的语法是

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

在更改这样的嵌套对象后,将会话标记为已修改。会话只能自动进行直接更改。

session.modified = True