1. 通过session模拟闪现功能
from flask import Flask,session
app = Flask(__name__)
app.secret_key = 'abcd'
@app.route('/index1',methods=['GET','POST'])
def index1():
session['msg'] = '这条信息阅后即焚'
return '视图函数1'
@app.route('/index2',methods=['GET','POST'])
def index2():
if session.get('msg'):
msg = session.pop('msg')
print(msg)
else:
print('么有msg信息了')
return '视图函数2'
if __name__ == '__main__':
app.run()
访问/index1时,往session放置了msg信息,当再访问index2时,就会打印msg,但是同时也将msg从session中pop掉了,那么再次访问index2时,就无法打印msg信息了(因为msg已经从session中pop掉了)
这就是一种类似阅后即焚的功能,即闪现
2. 闪现
2.1 定义及相关概念
- 1)闪现:
如果某条信息,仅需要查看一次,那么就可以用闪现 - 2)导入方法
flask
和get_flashed_messages
- 3)闪现就是基于session来实现的:
flash就是把信息放到session
get_flashed_messages就是从session中把信息拿出来
flash的信息是以列表的形式存在的[‘这条信息阅后即焚’];
例如连续访问两次index1后,再访问index2:[‘这条信息阅后即焚’, ‘这条信息阅后即焚’],第二次访问index2时:[]
2.2 使用示例
1)基本实现
代码
from flask import Flask,flash,get_flashed_messages
app = Flask(__name__)
app.secret_key = 'abcd'
@app.route('/index1',methods=['GET','POST'])
def index1():
flash('这条信息阅后即焚')
return '视图函数1'
@app.route('/index2',methods=['GET','POST'])
def index2():
data = get_flashed_messages()
print(data)
return '视图函数2'
if __name__ == '__main__':
app.run()
执行结果
当访问一次index1再访问index2时,后台打印结果:
['这条信息阅后即焚']
第二次访问index2时,后台打印结果
[]
当访问3次index1再访问index2时,后台打印结果:
['这条信息阅后即焚', '这条信息阅后即焚', '这条信息阅后即焚']
第二次访问index2时,后台打印结果
[]
由上述打印结果可知
- 信息是以列表的形式存在的
- 只有在第一次访问index2时才能看到相关信息
2)读取指定数据
代码
from flask import Flask,flash,get_flashed_messages
app = Flask(__name__)
app.secret_key = 'abcd'
@app.route('/index1',methods=['GET','POST'])
def index1():
# 设置多条
flash('这条信息阅后即焚1',category='num1')
flash('这条信息阅后即焚2',category='num2')
return '视图函数1'
@app.route('/index2',methods=['GET','POST'])
def index2():
#读取指定数据
data = get_flashed_messages(category_filter=['num2'])
print(data)
return '视图函数2'
if __name__ == '__main__':
app.run()
执行结果
当访问一次index1再访问index2时,后台打印结果:
['这条信息阅后即焚2']
第二次访问index2时,后台打印结果
[]
当访问3次index1再访问index2时,后台打印结果:
['这条信息阅后即焚2', '这条信息阅后即焚2', '这条信息阅后即焚2']
第二次访问index2时,后台打印结果
[]
由上述打印结果可知
- flash通过
category
字段标识了信息 - get_flashed_messages通过
category_filter
字段筛选指定的字段