基于 Django 会话密钥的过期

问题描述 投票:0回答:2

我正在使用 Django 会话,我想为特定密钥设置到期时间。在 AJAX 视图中,我正在执行以下操作

request.session['a'] = True
request.session.set_expiry(604800)

这是否为该特定密钥或该会话设置了到期时间?我正在以类似的方式为其他 AJAX 视图中的其他键设置会话。

如果我在我看来打印

request.session.get_expiry_date()
,我会得到从现在起7天后的日期,而不管我何时设置过期时间。为什么会这样?

python django session django-sessions
2个回答
1
投票

由于

set_expiry
session
的一种方法,它设置了会话的到期时间。

Django session 是一个完整的对象,不可能(没有手动工作)设置特定键的到期时间)


0
投票

那是因为当您

set_expiry
作为整数时,到期年龄被定义为不活动的秒数。

当你调用

get_expiry_age
方法时,修改参数默认为现在,“不活动秒数”从零开始计数。

如果您不想每次调用

get_expiry_age
时都重置计数器,您应该在设置到期时指定一个
timedelta

from datetime import timedelta

request.session.set_expiry(timedelta(seconds=604800))

参见get_expiry_age() 在 Django 中返回什么

© www.soinside.com 2019 - 2024. All rights reserved.