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

Flask 操作 Session

发布时间:2023-06-30 14:38:09 所属栏目:教程 来源:
导读:这节课我们就来学习下如何使用 Flask 框架操作 Session。和 Cookie 的操作差不多,对 Session 的操作同样有 设置、获取、删除等等。

1. 程序简介
1.1 程序功能和结构
完成一个 Flask 程序,提供操作 Session 的
这节课我们就来学习下如何使用 Flask 框架操作 Session。和 Cookie 的操作差不多,对 Session 的操作同样有 设置、获取、删除等等。

1. 程序简介
1.1 程序功能和结构
完成一个 Flask 程序,提供操作 Session 的 4 项功能,如下表所示:
页面路径    功能
/set    在 Session 中存储一个名称为 ‘user’、值为 ‘tom’ 的变量
/get    获取 Session 中名称为 ‘user’ 的变量
/del    删除 Session 中名称为 ‘user’ 的变量
/clear    清除 Session 中所有的变量

程序有 2 个源文件构成:
源文件    描述
app.py    Flask 后端程序,提供操作 Session 的接口
templates/query.html    查询 Session 中名称为 ‘user’ 的变量,并返回给客户端

2. 页面模板 query.html
用户的数据存储在 Session 中,服务端程序使用页面模板 query.html 展示 Session 中的数据,代码如下:
<html>
<head>
<Meta charset='UTF-8'>
<title>显示 session 中的变量</title>
</head>
<body>
<h1>显示 session 中的变量</h1>
<h2>session.get('user') = {{ user }}</h2>
</body>
</html>
在 Session 中存储了一个名称为 ‘user’ 的变量,页面模板显示该变量的值。

3. 后端程序 app.py
服务端程序 app.py 提供操作 Session 的功能。

3.1 引入模块
#!/usr/bin/python3
from flask import Flask, session, render_template
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom()
Flask 程序中有个配置属性叫做 SECRET_KEY,SECRET_KEY 是一个密钥,Flask 以及相关的扩展 extension 需要进行加密时需要使用到这个密钥,使用 Session 存储数据时,Flask 在内部需要进行加密处理。
初始化 Flask 应用对象后,配置 SECRET_KEY。函数 os.urandom (24) 生成一个包含 24 个字符的随机字符串,这个字符串被作为 SECRET_KEY。

3.2 返回给浏览器的内容
def query(): 
    user = session.get('user')
    return render_template('query.html', user = user)
query 函数从 Session 中获取名称为 ‘user’ 的变量,将值作为参数传递给页面模板 query.html,服务端渲染后生成包含有 Session 变量的值内容,返回给浏览器。
Flask 程序对 Sesion 进行设置、修改、删除的操作后,最后调用 query () 函数将 Session 中包含的变量的值返回给浏览器。
注意:可以通过 session [‘user’] 的方法获取名称为 ‘user’ 的变量的值,两者的区别在于:
如果变量 user 不存在,session [‘user’] 会抛出异常
如果变量 user 不存在,session.get (‘user’) 返回 None,不会抛出异常

3.3 设置 Session 中的变量
@app.route('/set')
def set():
    session['user'] = 'tom'
    return query()
设置页面路径 /set 的处理函数为 set,函数 set () 在 Session 中设置名称为 ‘user’ 的变量的值为 ‘tom’,最后调用 query () 函数返回 Session 中变量的值给浏览器。

 

(编辑:汽车网)

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

    推荐文章