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'的,所以情况二下第二次取值两个值都会被取出.初步猜测应该是正则机制.
posted @ 2021-12-17 16:48  残雪血夜  阅读(233)  评论(0)    收藏  举报