1. 设置 cookie

  • 方式一

    • 创建对象 make_response 的对象,然后调用对象的 set_cookie 方法设置 cookie

    • 语法:
      • response.set_cookie('cookie名', 'cookie值') -> 创建临时cookie
      • response.set_cookie('cookie名', 'cookie值', max_age=xxx) -> 创建有效期cookie

# app.py

from flask import Flask, render_template, make_response

app = Flask(__name__)


@app.route('/set_cookie')
def set_cookie():
""" 设置cookie """
    temp = render_template('index.html')

    response = make_response(temp)  # 创建响应对象

    response.set_cookie('t_c_key', 't_c_value')  # 设置 cookie,默认临时cookie浏览器关闭即失效
    response.set_cookie('v_p_key', 'v_p_value', max_age=20)  # 设置 cookie,通过 max_age 控制 cookie 有效期, 单位: 秒

    return response


if __name__ == '__main__':
    app.run()


  • 方式二 -> 很少使用

    • 直接设置cookie响应头

    • 除了键值对,其他部分可去浏览器检查摘抄

# app.py

from flask import Flask, render_template, make_response

app = Flask(__name__)


@app.route('/set_cookie')
def set_cookie():
""" 设置cookie """
    temp = render_template('index.html')
    response = make_response(temp)  # 创建响应对象
response.headers["Set-Cookie"] = 'v_p_key=v_p_value; Expires=Wed, 28-Aug-2019 08:48:36 GMT; Max-Age=20; Path=/'  # 直接设置cookie响应头
    return response


if __name__ == '__main__':
    app.run()


2. 删除 cookie

  • 创建对象 make_response 的对象,然后调用对象的 delete_cookie 方法删除 cookie

  • 语法: response.delete_cookie('cookie名')

# app.py

from flask import Flask, request, make_response

app = Flask(__name__)


@app.route('/delete_cookie')
def delete_cookie():
""" 删除cookie """
    response = make_response('删除成功')  # 创建响应对象

    response.delete_cookie('t_c_key')  # 删除 cookie

    return response


if __name__ == '__main__':
    app.run()

3. 获取 cookie

# app.py

from flask import Flask, request

app = Flask(__name__)


@app.route('/get_cookie')
def get_cookie():
""" 获取cookie """

    all_cookie = request.cookies # 获取所有的cookie
    print(all_cookie)  # {'t_c_key': 't_c_value', 'csrftoken': 'sqXJLV5sHo5s5yK2QttwrU3vcpL8SZnQ3Uxfr4xbGzMlMvEafVVxTRI2CbsyQjvv'}

    cookie = request.cookies.get('v_p_key')  # 获取指定的cookie
    print(cookie)  # v_p_value 或 None

    return cookie if cookie else 'cookie已过期'


if __name__ == '__main__':
    app.run()