Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中get\u expiration\u age()返回什么_Django - Fatal编程技术网

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秒钟内收到keyError
key 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中可用。