session修改二层数据, 没保存

flask中session修改二层数据

定义了一个session
session['user']={'name':lqz,'age':18}

直接修改了session里面的name
session['user']['name]='egon'

发现修改后没有保存

原因

查看源码发现session对象(继承了dict)有个modified属性, 默认为False
当直接给session赋值时会触发重写的__setitem__方法, 将modified属性值改为True
通过判断modified值, 为True才会保存
直接修改session的二层数据, 触发的是原始字典的__setitem__方法, modified值仍为False

解决

方式一: 手动修改modified
session.modified=True

方式二: 将整个session重新赋值
session['user']={'name':egon,'age':18}

你可能感兴趣的:(session修改二层数据, 没保存)