You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为返回redirect的Flask函数设置Cookie?

Flask重定向时设置Cookie的几种实现方法

方法1:直接操作redirect返回的响应对象

Flask的redirect()函数本质上返回的是一个Response实例,你完全可以先获取这个响应对象,再调用set_cookie()方法设置Cookie,最后返回该对象。这是最直接的方案:

from flask import redirect

@app.route('/create_application', methods=['POST'])
def create_application():
    # 执行创建application的逻辑,这里假设已生成application对象
    application = YourApplicationModel(...)
    application.save()  # 保存到数据库

    # 生成重定向响应
    redirect_resp = redirect('/target_page')
    # 设置Cookie,注意将application.id转为字符串(Cookie值仅支持字符串类型)
    redirect_resp.set_cookie('application_id', str(application.id))
    # 可额外配置Cookie参数,比如过期时间、生效路径等
    # redirect_resp.set_cookie('application_id', str(application.id), max_age=3600, path='/')

    return redirect_resp

方法2:用@app.after_request结合g对象传递数据

如果需要在多个视图中复用Cookie设置逻辑,可以借助after_request装饰器。通过Flask的g对象(请求上下文全局变量)传递application.id:

from flask import g, redirect

@app.route('/create_application', methods=['POST'])
def create_application():
    application = YourApplicationModel(...)
    application.save()
    # 将application.id存入g对象,供后续after_request钩子读取
    g.application_id = application.id
    return redirect('/target_page')

@app.after_request
def set_app_cookie(response):
    # 检查g对象中是否存在目标值,避免给其他请求误加Cookie
    if hasattr(g, 'application_id'):
        response.set_cookie('application_id', str(g.application_id))
    return response

替代方案:通过重定向参数传递,在目标路由设置Cookie

如果重定向的目标是本应用内的路由,也可以把application.id作为查询参数传递,在目标路由中完成Cookie设置:

from flask import redirect, request, make_response, render_template

@app.route('/create_application', methods=['POST'])
def create_application():
    application = YourApplicationModel(...)
    application.save()
    # 将app_id作为查询参数拼接到重定向地址中
    return redirect(f'/target_page?app_id={application.id}')

@app.route('/target_page')
def target_page():
    app_id = request.args.get('app_id')
    if app_id:
        # 渲染页面并设置Cookie
        resp = make_response(render_template('target.html'))
        resp.set_cookie('application_id', app_id)
        return resp
    # 无app_id参数时直接返回页面
    return render_template('target.html')

内容的提问来源于stack exchange,提问作者Lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:58:17