request.session.get_expiry_age()
不会返回剩余的实际秒数,而是返回在request.session.set_expiry(10).
中设置的固定值= 10
在主页视图中:
request.session['var1']=1
request.session.set_expiry(10)
在view2中:
print(request.session['var1'])
无论我刷新view2多少次,从上一次调用主页视图起10秒钟,我都会得到keyError key not found
。
这意味着会话不会在调用主页视图后的10秒后过期。
是否还有其他内置函数可以显示每次调用view2时会话到期的实际剩余秒数。
谢谢
答案 0 :(得分:1)
可以从set_expiry()
的文档中了解到会话过期的语义有细微的区别:
设置会话的到期时间。您可以传递许多不同的值:
- 如果
value
是整数,则会话将在 秒钟的闲置时间 之后终止。- 如果
value
是datetime
或timedelta
对象,则会话将在该 特定日期/时间 上终止。< / li>
换句话说,当您说set_expiry(10)
时,并不是说会话应该从现在开始10秒钟到期,而是说会话应该在10秒钟不活动之后到期。
并且由于get_expiry_age()
具有默认为现在的modification
参数,因此它将始终返回10
。
如果您希望会话从现在开始10秒钟过期,则需要设置特定的datetime
或timedelta
:
from datetime import timedelta
request.session.set_expiry(timedelta(seconds=10))
如果这样做,get_expiry_age()
应该会按预期工作。