Django调用request.session.get_session_cookie_age()报错:SessionStore对象无此属性
嘿,我来帮你梳理下这个问题~
首先,你遇到的报错是因为Django 2.0版本的SessionStore对象(也就是request.session对应的实例)根本没有get_session_cookie_age()这个方法,你可能是误看了更高版本的Django文档才尝试调用这个方法的😅。
针对你的需求,分两种情况给你解决方案:
1. 想获取全局配置的SESSION_COOKIE_AGE值
直接从Django配置中读取即可,代码如下:
from django.conf import settings print(settings.SESSION_COOKIE_AGE)
2. 想获取当前会话的实际过期时长(包括自定义会话过期)
从你调试的结果来看,当前会话已经设置了_session_expiry: 3600,这说明这个会话有自定义的过期时间。这种情况下,你应该使用request.session.get_expiry_age()方法——它会优先返回会话的自定义过期时长,如果没有设置自定义过期,才会返回全局的SESSION_COOKIE_AGE值。
举个例子,你可以在视图里这么写:
print(request.session.get_expiry_age())
这个方法在Django 2.0中是完全支持的,刚好匹配你的版本。
另外,再补充一点:你调试时看到的_session_expiry字段,是Django用来存储会话自定义过期时间的内部字段,直接读取它虽然能拿到值,但官方更推荐使用get_expiry_age()这类封装好的方法,避免内部字段变更带来的问题。
备注:内容来源于stack exchange,提问作者Zikofs
相关产品推荐
相关产品推荐

