我在一页的Flask会话中设置值,并在下一页检索值。在这两者之间,我正在使用的字典中的键似乎已从整数转换为字符串。这应该发生吗?
示例:
from flask import session, redirect
@app.route('/')
def page_1():
test = {}
test[1] = {}
print(test) # outputs >>> {1: {}}
session['store'] = {}
session['store'][1] = {}
return redirect('/two')
@app.route('/two')
def page_2():
print(session)
印刷品的输出看起来像这样(并且在1
起作用的情况下,向字典查询键'1'
返回一个错误):
<SecureCookieSession {'store': {'1': {}}, 'csrf_token': 'biglongtoken...'}>
有什么办法解决吗?应该发生吗?
答案 0 :(得分:1)
创建会话时,会话中存储的所有内容都经过安全签名(未加密),并作为cookie发送给客户端,当客户端重新连接到您的站点时,它将cookie送回,您反序列化并使用flask.session
访问。
Flask使用itsdangeous
签名会话数据,这会将您的数据序列化为JSON。在JSON中,键只能是字符串,非字符串会被转换。从客户端读取cookie时,键仍为字符串。