Python Django:Cookie设置为在30秒内过期,实际上是在30分钟内过期?

Python Django:Cookie设置为在30秒内过期,实际上是在30分钟内过期?,python,django,cookies,Python,Django,Cookies,这是我的代码: 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_

这是我的代码:

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,“Expires”日期是:

Tue Apr 5 23:50:07 2011
我做错了什么?

试试看:

hr.set_cookie('user_id', user_id, max_age=30)

max_age参数是您希望cookie持续的秒数。

您可以将
max_age
参数与秒数一起使用,而不是使用
expires
;它将为您计算过期时间。
datetime.now()
的问题可能是您没有使用UTC(您可以改用
datetime.utcnow()


故事的寓意:;它解释了您需要使用UTC
datetime
对象,并描述了
max_age
对于那些在签名cookie中遇到相同问题的对象,您必须使用
max_age
属性。我试着用这个方法设置它,但当再次获取它时,它不起作用

所以这不会使您的cookie过期:

cookie_max_age = settings.TWO_FACTOR_REMEMBER_USER_SECONDS
response.set_signed_cookie('key', max_age=cookie_max_age)
但是当按如下方式获取它时,它应该可以工作(在cookie上设置和不设置
max_age
):


谢谢我试图阅读文档,但由于某种原因,它没有进入。。。
cookie_max_age = settings.TWO_FACTOR_REMEMBER_USER_SECONDS
response.set_signed_cookie('key', max_age=cookie_max_age)
cookie_max_age = 3600
cookie = request.get_signed_cookie('key', max_age=cookie_max_age)