这是我的代码:
def update_session(request):
if not request.is_ajax() or not request.method=='POST':
return HttpResponseNotAllowed(['POST'])
user_id = request.POST.get('u')
hr = set_terminal_cookie(user_id)
return hr
def set_terminal_cookie(user_id):
print 'set_terminal_cookie'
hr = HttpResponse('ok')
print datetime.datetime.now()
expiry_time = datetime.datetime.now() + datetime.timedelta(seconds=30)
print expiry_time
hr.set_cookie('user_id', user_id, expiry_time)
return hr
这是日志输出:
set_terminal_cookie
2011-04-05 23:16:36.706624
2011-04-05 23:17:06.706806
但是,如果我随后在 Firefox 中检查“user_id”cookie,“到期”日期为:
Tue Apr 5 23:50:07 2011
我究竟做错了什么?
最佳答案
您可以将 max_age
参数与秒数一起使用,而不是使用 expires
;它会为你计算 expires
。您 datetime.now()
的问题可能是您没有使用 UTC(您可以使用 datetime.utcnow()
代替)。
hr.set_cookie('user_id', user_id, max_age=30)
故事寓意: read the documentation ;它解释了您需要使用 UTC
datetime
对象并描述了 max_age
。关于python - Django:设置为 30 秒后过期的 Cookie 实际上是 30 分钟后过期?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5559271/