1

如果我清除我的 cookie 并运行此视图,我会在每个页面加载时获得一个新的会话密钥。

如果我注释掉打印,并在模板中输出会话密钥,则每次加载新的会话密钥。

如果我在视图和模板中都打印会话密钥,则会话密钥被“保存”并且在每次页面加载时保持不变。

def view_session(request):
    print request.session.session_key
    return render(request, "view_session.html", {})

那么如何解释这种行为呢?

这不仅仅是两次读取,因为我可以在视图中打印两次并且仍然可以获得新密钥。

4

1 回答 1

3

默认情况下,Django 仅在会话被修改时才保存到会话数据库中——也就是说,如果它的任何字典值已被分配或删除

要更改此默认行为,请将 SESSION_SAVE_EVERY_REQUEST 设置设置为 True。当设置为 True 时,Django 将在每次请求时将会话保存到数据库中。

请注意,会话 cookie 仅在创建或修改会话时发送。如果 SESSION_SAVE_EVERY_REQUEST 为 True,会话 cookie 将在每个请求上发送。

保存会话的时间开始

于 2012-03-18T12:58:46.680 回答