场景:
当在A页面操作出现错误后,跳转到B页面,将错误信息在B页面展示出来,此时可以用到闪现
特点
1.如果要用flash就必须设置app.secret_key
2.信息只能取一次,再取就没有了
使用
from flask import flash,get_flashed_messages
设置: flash('普通信息',category="error") category:对信息分类
取值: get_flashed_messages(with_categories=True,category_filter=("error",))
- with_categories 默认为False, 默认获取时只显示信息,不显示分组
- category_filter 默认为(), 用来指定获取那个分组的信息
案例
from flask import Flask,flash,redirect,get_flashed_messages,session
app = Flask(__name__)
app.secret_key = 'asdfasdf'
@app.route('/index')
def index():
#(category="message", message))
flash('超时错误',category="error")
flash('普通信息',category="info")
# 闪现信息是session的形式存储,这也解释了为什么必须设置pp.secret_key
print(session["_flashes"]) # [('error', '超时错误'), ('info', '普通信息')]
return redirect('/error')
@app.route('/error')
def error():
# data = get_flashed_messages(with_categories=True,category_filter=("error","info"))
# print("data",data) # data [('error', '超时错误'), ('info', '普通信息')]
data1 = get_flashed_messages(with_categories=False, category_filter=("error", ))
if data1:
print("data1",data1) # data1 ['超时错误',]
return "%s" %data1[0]
return '...'
# 在一次请求内,可多次获取闪现信息,当第二向/error请求时,闪现信息为空,
# 闪现信息是从session.pop取出赋值给flashes,看源码得知,在同一请求内科多次拿到闪现信息
# 当再次向/error请求时,session内已经没有闪现信息,所以打印出来为空
if __name__ == '__main__':
app.run()