2016-09-21 121 views
0

从我理解的here session_key是会话对象的主键。request.session.session_key尽管SESSION_SAVE_EVERY_REQUEST(Django 1.10.1)没有设置

当我检查request.session时,我找到一个会话对象,但它的主键没有设置。它似乎未得救。所以现在我通过在每个视图中检查是否存在request.session.session_key来解决这个问题,如果不存在,调用save()。

有没有人有解释为什么我只能看到未保存的会话对象?

回答

2

如果你的会话的设置是否正确,可能有两件事情正在进行:

  • 会话被保存在请求年底。即使会话非空,在响应中间件运行之前它也不会有主键。下一个请求中的会话将有一个主键。

  • 空会话总是被删除。如果您的会话不包含任何数据,则会话和cookie将被清除,并且下一个请求将具有空主会话的空会话。

这些都是会话正常工作时的有效场景。即使使用SESSION_SAVE_EVERY_REQUEST,空会话仍然被清除。

如果由于某种原因未设置会话cookie,或者它无效(因为它已被篡改),会话密钥也将被设置为None

+0

好的,所以空的会话也会被删除。这可能是,我认为保存每个请求字面意思是每个请求。谢谢! –

相关问题