会话上的运行方法到期Django

时间:2014-10-01 15:23:45

标签: django python-2.7

我正在使用session来存储一个对象id及其描述,这个实例应该被阻止给所有其他用户,当它在某人的会话中使用时,我想在关闭浏览器后释放用户对象,现在我知道有一个配置可以在浏览器关闭时使会话过期,如果有任何入口点我可以添加一些自定义代码,我只是徘徊

我想要达到的目标就像是

def OnSessionExpire(???):
     #release my objects

我已经四处寻找但没有找到答案,有人可以帮忙吗?我正在使用后端会话模式

谢谢!

1 个答案:

答案 0 :(得分:1)

当浏览器关闭时,Django根本不做任何事情。 Django甚至不知道 - 它怎么可能:Django唯一知道你在浏览器中做什么的时候就是你向服务器发出请求,但关闭浏览器与发出请求相反。

浏览器关闭时的会话到期是会话cookie的一个属性,而不是Django所做的任何事情。它只是意味着cookie设置了一个标志,告诉浏览器在关闭时不要保留它。实际会话数据保留在Django的会话存储中,直到您明确清除它为止,但由于cookie已被删除而无法访问。

因此,结果就是没有办法明确说明会话何时结束。您唯一能做的就是在会话开放时发送定期的保持活动信号 - 例如通过Ajax - 如果您暂时没有看到任何信号,请采取行动。

相关问题