加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Flask 操作 Cookie

发布时间:2023-06-30 14:35:59 所属栏目:教程 来源:
导读:这节课我们就来学习下如何使用 Flask Web 框架来操作 Cookie。

1. 程序简介

1.1 程序功能
完成一个 Flask 程序,提供操作 Cookie 的 3 项功能,如下表所示:
页面路径 功能
/set_cookie 设置一个名称
这节课我们就来学习下如何使用 Flask Web 框架来操作 Cookie。

1. 程序简介

1.1 程序功能
完成一个 Flask 程序,提供操作 Cookie 的 3 项功能,如下表所示:
页面路径    功能
/set_cookie    设置一个名称为 ‘mooc’、值为 ‘www.imooc.com’ 的 Cookie
/get_cooike    在服务端获取名称为 ‘mooc’ 的 Cookie,并将其值返回给客户
/del_cooike    删除名称为 ‘mooc’ 的 Cookie

程序有 3 个源文件构成:
源文件    描述
app.py    Flask 后端程序,提供操作 Cookie 的接口
templates/get_cookie.html    在服务端获取 Cookie,显示 Cookie 的值
templates/js_cookie.html    在客户端通过 Javascript 显示 Cookie 的值

2. 模板文件 get_cookie.html
浏览器访问网站时,每次都会把 Cookie 发送给服务端,在服务端获取 Cookie 并返回给浏览器,显示的页面模板如下所示:
<html>
<Meta charset='UTF-8'>
<title>在服务端获取 cookie</title>
<body>
<h2>在服务端获取 cookie: <b>{{cookie}}<b/></h2>
</body>
</html>
服务端渲染 templates/get_cookie.html 时,将 Cookie 的值传递给页面模板,在第 6 行,显示 Cookie 的值。

3. 模板文件 js_cookie.html
Cookie 保存在客户端,在客户端可以使用 Javascript 读取 Cookie 的值,代码如下:
<html>
<Meta charset='UTF-8'>
<title>在服务端设置 cookie</title>
<body>
<h2>在服务端设置 cookie</h2>
<h2>在客户端通过 Javascript 读取 cookie: <b id='cookie'><b/></h2>
</body>
<script> 
cookie = document.getElementById('cookie'); 
cookie.innerHTML = document.cookie;
</script> 
</html>
在第 7 行,定义了一个 id 为 ‘cookie’ 的 HTML 元素;在第 11 行,获取 id 为 ‘cookie’ 的 HTML 元素;在第 12 行,document.cookie 是浏览器端保存的 cookie 值,在 id 为 ‘cookie’ 的 HTML 元素中显示 cookie 的值。

4. 后端程序 app.py
4.1 引入相关模块
#!/usr/bin/python3
from flask import Flask, request, Response, render_template
app = Flask(__name__)
从 flask 模块中引入 request 对象,request.cookies 存储了客户端发送的 Cookie。
从 flask 模块中引入 Response 类,页面处理函数返回 Response 对象,而不是字符串。Response 对象提供了 set_cookie 和 delete_cookie 等方法用于设置 Cookie 相关的 HTTP 消息头。

4.2 在服务端获取 Cookie
@app.route('/get_cookie')
def get_cookie():
    cookie = request.cookies.get('mooc')
    return render_template('get_cookie.html', cookie = cookie)
设置访问页面 /get_cookie 的处理函数 get_cookie,request.cookies.get (‘mooc’) 返回请求中名称为 ‘mooc’ 的 Cookie 的值,将其传递给页面模板 get_cookie.html。

4.3 设置 Cookie
@app.route('/set_cookie')
def set_cookie():
    html = render_template('js_cookie.html')
    response = Response(html) 
    response.set_cookie('mooc', 'www.imooc.com')
    return response
设置访问页面 /set_cookie 的处理函数 set_cookie。在第 3 行,首先获取页面模板 js_cookie.html 的内容;在第 4 行,通过类 Response 创建一个 response 对象;在第 5 行,方法 respose.set_cookie () 产生一个 HTTP 的 Set-Cookie 消息头;在第 6 行,页面处理函数返回 response 对象,该对象包含有 Set-Cookie 消息头。

Flask 框架将 response 对象发送给客户端,在返回给浏览器的响应中,包含有 Set-Cookie 消息头,浏览器收到这个消息头后,会在本地存储 Cookie 的值。因此,在 templates/js_cookie.html 文件中,可以通过 Javascript 读取 Cookie 的值。

4.4 删除 Cookie
@app.route('/del_cookie')
def del_cookie():
    html = render_template('js_cookie.html')
    response = Response(html) 
    response.delete_cookie('mooc')
    return response
if __name__ == '__main__':
    app.run(debug = True)
设置访问页面 /del_cookie 的处理函数 del_cookie。在第 3 行,首先获取页面模板 js_cookie.html 的内容;在第 4 行,通过类 Response 创建一个 response 对象;在第 5 行,方法 respose.delete_cookie () 产生一个删除 Cookie 的消息头;在第 6 行,页面处理函数返回 response 对象,该对象包含有删除 Cookie 的消息头。

Flask 框架将 response 对象发送给客户端,在返回给浏览器的响应中,包含有删除 Cookie 的消息头,浏览器收到这个消息头后,会在本地删除 Cookie。因此,在 templates/set_cookie.html 文件中,通过 Javascript 读取 Cookie 的值为空。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章