如果我清除我的cookie并运行此视图,我会在每个页面加载时获得一个新的会话密钥。
如果我注释掉打印,并在模板中输出会话密钥,则每次加载新的会话密钥。
如果我在视图和模板中打印会话密钥,则会话密钥被“保存”并且每个页面加载时保持不变。
def view_session(request):
print request.session.session_key
return render(request, "view_session.html", {})
那么如何解释这种行为?
这不仅仅是两次读取,因为我可以在视图中打印两次并仍然获得新的密钥。
答案 0 :(得分:3)
默认情况下,Django仅在会话时保存到会话数据库 已修改 - 即它的任何字典值已被修改 分配或删除
要更改此默认行为,请设置SESSION_SAVE_EVERY_REQUEST 设置为True。设置为True时,Django会将会话保存到 每个请求都有数据库。
请注意,会话cookie仅在会话结束时发送 创建或修改。如果SESSION_SAVE_EVERY_REQUEST为True,则为 会话cookie将在每次请求时发送。