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

Won*_*ket 10 cookies flask python-2.7

我有这个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
Run Code Online (Sandbox Code Playgroud)

上面的代码工作,它按预期创建cookie,但是默认情况下,只要浏览器会话结束,cookie就会过期.

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

rsp.set_cookie(key, guid)
Run Code Online (Sandbox Code Playgroud)

rsp.set_cookie(key, guid, expires=90)
Run Code Online (Sandbox Code Playgroud)

它根本不会创建cookie.

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

Cod*_*ker 26

您需要设置max_age=90 * 60 * 60 * 24,或使用a datetime到期:

例:

import datetime
expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(days=90)
response.set_cookie(key, guid, expires=expire_date)
Run Code Online (Sandbox Code Playgroud)

  • max_age是以秒为单位,而不是几天,因此它将是"60*60*24*90",来源:http://flask.pocoo.org/docs/0.11/api/#flask.Response.set_cookie (3认同)
  • 最长年龄带有下划线,例如:response.set_cookie(key,guid,max_age = 90) (2认同)