Django中get\u expiration\u age()返回什么
Django中get\u expiration\u age()返回什么,django,Django,request.session.get\u expiration\u age()返回request.session.set\u expiration(10)中设置的固定值=10,而不是返回到期的实际剩余秒数。 在主页视图中: request.session['var1']=1 request.session.set_expiry(10) 在视图2中: print(request.session['var1']) 无论我刷新view2多少次,我都会从上次调用homepage view的那一刻起
request.session.get\u expiration\u age()返回request.session.set\u expiration(10)中设置的固定值=10,而不是返回到期的实际剩余秒数。
在主页视图中:
request.session['var1']=1
request.session.set_expiry(10)
在视图2中:
print(request.session['var1'])
无论我刷新view2多少次,我都会从上次调用homepage view的那一刻起10秒钟内收到keyErrorkey not found
这意味着会话将在调用主页视图10秒后过期
是否有其他内置函数可以显示每次调用view2时会话到期的实际剩余秒数
感谢会话过期的语义有细微的区别,可以从以下文档中获得:
设置会话的过期时间。您可以传递多个不同的值:
- 如果
value
是一个整数,则会话将在数秒的不活动时间后过期
- 如果
value
是datetime
或timedelta
对象,则会话将在该特定日期/时间过期
换句话说,当你说set\u expiry(10)
时,你不是说会话应该在10秒后过期,而是说会话应该在10秒不活动后过期
由于有一个默认为now的modification
参数,它将始终返回10
如果希望会话从现在起10秒过期,则需要设置特定的datetime
或timedelta
:
from datetime import timedelta
request.session.set_expiry(timedelta(seconds=10))
如果您这样做,get\u expiration\u age()
应该可以正常工作。我在主页中设置了set\u expiration(10),然后转到view2。无论我刷新view2多少次或转到主页以外的任何视图,会话都将在我上次呈现主页视图后10秒过期。我想做的是,当我调用view2时,能够得到确切的剩余秒数。我第一次调用view2时,它可能会说还剩9秒。第二次调用view2时,它可能会说剩余3秒到期。有办法吗that@Aseem:您是否理解我的观点,set\u expiration(10)
不是设置绝对过期时间,而是设置相对过期时间?因此,无法知道“还剩的确切秒数”,因为这可能随时发生变化。@Aseem:更实际地说,相对过期时间是通过在会话cookie上设置过期时间来实现的,过期时间由浏览器控制。该信息在服务器上不可用。设置绝对过期时间由服务器控制,该值在API中可用。