从 django 的文档中,我的印象是调用:
request.session.set_expiry(300)
从一种观点来看,会导致会话在五分钟 不活动 后过期;但是,这不是我在 django trunk 中遇到的行为。如果我从一个视图调用此方法,然后浏览到其他未调用该方法的视图,会话将在五分钟后过期。我期望的行为是仅在五分钟不活动后才过期,而不仅仅是在过期前再次调用 set_expiry 失败。
那么我的问题是我真的需要在每个视图中调用 set_expiry 吗?如果是这样,是否存在一些可能有帮助的装饰器?我无法想象这不是 contrib 的一部分。
谢谢,皮特
原文由 slypete 发布,翻译遵循 CC BY-SA 4.0 许可协议
作为这些方法的作者,我可以看到文档对此不是很清楚。您的观察是正确的:只有导致会话被更改的请求才被视为“活动”。
您可以使用
SESSION_SAVE_EVERY_REQUEST
设置来获得您想要的行为(明显的代价是每次请求都必须保存会话)。注意:它将使用最新的到期日期更新现有会话记录。