Flask -- flash机制
flask的flash机制要依托于session,所以使用前必须保证设置了session:
app.session_cookie_name = 'i am session'
app.secret_key = '!!@@#$%%^&**()('
from flask import Blueprint
from flask import flash, get_flashed_messages
my_flash = Blueprint('my_flash', __name__, url_prefix='/my_flash')
@my_flash.route('/add_flash', methods=['GET', 'POST'])
def add_flash():
# 存入
flash('闪现', 'ooo')
# 存入
flash(123, 'ooo1')
# # 存入
# flash(123, 'tag')
return '已存入'
@my_flash.route('/del_flash', methods=['GET', 'POST'])
def del_flash():
# category_filter:类别过滤器
# 根据category_filter取出
msg = get_flashed_messages(category_filter='ooo')
# 根据category_filter取出
msg1 = get_flashed_messages(category_filter='ooo1')
# # 存入第二组
# msg1 = get_flashed_messages(category_filter='tag')
print(msg, 111)
print(msg1, 222)
return '已取出'
# 情况一:类别过滤器条件为'ooo'和'ooo1'
# 输出:
['闪现'] 111
['闪现', 123] 222
# 情况二:类别过滤器条件为'ooo'和'tag'
# 输出:
['闪现'] 111
[123] 222
- 解释1: flash类似于一次性存储空间,很多博主弄混了一件事,那就是,这个一次性是指在flash空间有数据的情况下,第一次针对flash的request访问,在这一次访问后,才会销毁这个空间,即销毁空间需要满足两个条件:1.调用get_flashed_messages()方法,2.访问完成. 而不是第一次调用get_flashed_messages函数后就销毁.就如上面的例子一样,数据存入以后,在第一次请求del_flash的过程中,多次调用get_flashed_messages都可以取到数据,在请求结束后,flash空间销毁. 这时再次发起del_flash请求时,打印为[ ]
- 解释2: 关于category_filter参数,具体识别机制不明,但有一点,'ooo1'这一判定条件是包含'ooo'的,所以情况二下第二次取值两个值都会被取出.初步猜测应该是正则机制.

浙公网安备 33010602011771号