python flask在设置过期时不创建cookie

时间:2014-10-28 16:24:45

标签: python-2.7 cookies flask

我有这个python-flask项目,如果cookie不存在,我需要创建cookie的逻辑。

创建cookie后,我需要将cookie以及其他值存储到数据库中以进行跟踪。

以下是我当前代码的一部分:

import uuid
from flask import render_template, request, make_response

def load_cookie_config(context):
    #context is a dictionary that is passed

    key = 'some_key'
    template_name = 'some_template'
    cookie = request.cookies.get(key, None)

    if not cookie:
        guid = str(uuid.uuid4())
        context['cookie_quid'] = guid

        rsp = make_response(render_template(template_name, **context))

        rsp.set_cookie(key, guid)

        #... some method call insert values into db

    else:
       result = '' #.. some method call to get values from db
       context['cookie_quid'] = cookie
       rsp = make_response(render_template(template_name, **context))

    return rsp

上面的代码可以正常工作,它可以按预期创建cookie,但是只要浏览器会话结束,它就会默认cookie过期。

我需要将Cookie设置为在X天数与浏览器会话后过期的位置,但是当我更改此行时:

rsp.set_cookie(key, guid)

rsp.set_cookie(key, guid, expires=90)

它根本不会创建cookie。

有没有人对这可能是什么有想法或想法?

1 个答案:

答案 0 :(得分:21)

您需要设置max_age=90,或使用datetime来过期:

示例:

import datetime
expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(days=90)
response.set_cookie(key, guid, expires=expire_date)