我有这个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。
有没有人对这可能是什么有想法或想法?
答案 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)