我正在使用 Django 会话,我想为特定密钥设置到期时间。在 AJAX 视图中,我正在执行以下操作
request.session['a'] = True
request.session.set_expiry(604800)
这是否为该特定密钥或该会话设置了到期时间?我正在以类似的方式为其他 AJAX 视图中的其他键设置会话。
如果我在我看来打印
request.session.get_expiry_date()
,我会得到从现在起7天后的日期,而不管我何时设置过期时间。为什么会这样?
由于
set_expiry
是session
的一种方法,它设置了会话的到期时间。
Django session 是一个完整的对象,不可能(没有手动工作)设置特定键的到期时间)
那是因为当您
set_expiry
作为整数时,到期年龄被定义为不活动的秒数。
当你调用
get_expiry_age
方法时,修改参数默认为现在,“不活动秒数”从零开始计数。
如果您不想每次调用
get_expiry_age
时都重置计数器,您应该在设置到期时指定一个timedelta
:
from datetime import timedelta
request.session.set_expiry(timedelta(seconds=604800))