Flask 操作 Session
上一个小节我们讲解了如何使用 Flask 框架操作 Cookie,作为和 Cookie 相辅相成的 Session,Flask 框架也对其做了很好的支持,这节课我们就来学习下如何使用 Flask 框架操作 Session。和 Cookie 的操作差不多,对 Session 的操作同样有 设置、获取、删除等等。
1. 程序简介
1.1 程序功能和结构
程序有 2 个源文件构成:
1.2 源程序下载
2. 页面模板 query.html
<html>
<head>
<Meta charset='UTF-8'>
<title>显示 session 中的变量</title>
</head>
<body>
<h1>显示 session 中的变量</h1>
<h2>session.get('user') = {{ user }}</h2>
</body>
</html>
3. 后端程序 app.py
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 在内部需要进行加密处理。
3.2 返回给浏览器的内容
def query():
user = session.get('user')
return render_template('query.html', 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 中变量的值给浏览器。
3.4 获取 Session 中的变量
@app.route('/get')
def get():
return query()
3.5 删除 Session 中的变量
@app.route('/del')
def delete():
session.pop('user')
return query()
设置页面路径 /del 的处理函数为 del,函数 del 使用 session.pop (‘user’) 在 Session 中删除名称为 ‘user’ 的变量,最后调用函数 query 返回 Session 中变量的值给浏览器。
3.6 清空 Session 中全部的变量
@app.route('/clear')
def clear():
session.clear()
return query()
if __name__ == '__main__':
app.run(debug=True)
设置页面路径 /set 的处理函数为 clear,函数 clear 使用 session.clear () 删除 Session 中所有的变量,最后调用函数 query 返回 Session 中变量的值给浏览器。
4. 运行程序
1. 在浏览器器中输入 http://localhost:5000/get,显示如下:
初始化的状态下,Session 为空,因此变量 user 的值为空。
2. 在浏览器器中输入 http://localhost:5000/set,显示如下:
3. 在浏览器器中输入 http://localhost:5000/del,显示如下:
4. 在浏览器器中输入 http://localhost:5000/clear,显示如下:
5. 小结
本节讲解在 Flask 中如何操作 Session,使用思维导图概括如下: