在请求中,我在session['test']
中设置了字典:
session['test'] = {'test': {'test': {'test':0}}}
下一次迭代,会话从MongoDB读回,但dict
已成为<class 'mongoengine.base.datastructures.BaseDict'>
,它是不可变的。试图修改它会引发
ReferenceError: weakly-referenced object no longer exists
我可以转换为dict
,但它不是递归的。
print(type(session['test']))
print(type(session['test']['test']))
print(type(session['test']['test']['test']))
test = dict(session['test'])
print(type(test))
print(type(test['test']))
print(type(test['test']['test']))
打印
<class 'mongoengine.base.datastructures.BaseDict'>
<class 'mongoengine.base.datastructures.BaseDict'>
<class 'mongoengine.base.datastructures.BaseDict'>
<class 'dict'>
<class 'mongoengine.base.datastructures.BaseDict'>
<class 'mongoengine.base.datastructures.BaseDict'>
cookie会话存储不会发生这种情况。
这是MongoEngineSessionInterface
的限制(与Cookie界面相对)吗?
我做错了吗?关于MongoEngineSessionInterface
的文档有点简短。
我是否误用session
试图填写其中的许多数据?
关键是我可以阅读或替换session
中的密钥,但我不能再修改它了。
Name: Flask
Version: 0.10.1
Location: /usr/lib/python3/dist-packages
Name: flask-mongoengine
Version: 0.7.5
Location: /home/jerome/.virtualenvs/simutheque/lib/python3.4/site-packages