闪现

一、闪现

闪现:闪现解决的问题,假设在a页面操作出错,c页面(操作了多少页面我都不管),跳转到b页面,在b页面显示a页面错误信息;

Flask 提供了一个非常简单的方法来使用闪现系统向用户反馈信息。闪现系统使得在一个请求结束的时候记录一个信息,然后在且仅仅在下一个请求中访问这个数据,强调flask闪现是基于flask内置的session的,利用浏览器的session缓存闪现信息。所以必须设置secret_key

"""
闪现:
闪现解决的问题,假设在a页面操作出错,c页面(操作了多少页面我都不管),跳转到b页面,在b页面显示a页面错误信息

"""

from flask import Flask, flash, get_flashed_messages, request, redirect

app = Flask(__name__)

app.secret_key = 'keykeykey'


@app.route('/index')
def index():
    flash("超时错误")

    flash("分类flash", category="分类名称")

    # 直接
    return redirect('/error1')


@app.route('/error')
def error():
    return "error ok"


@app.route('/error1')
def error1():
    """
    展示错误信息
    :return:

    如果get_flashed_messages(with_category=True)
    """

    data = get_flashed_messages(with_categories=True, category_filter=("分类名称",))
    data2 = get_flashed_messages()
    print(data)
    print(data2)
    return "error2"


@app.route('/error2')
def error2():
    data = get_flashed_messages()

    print("eeror2", data)

    return "ok1"


if __name__ == '__main__':
    app.run()

总结:

  1. 用于页面的跳转

  2. 源码分析

    # flash函数
    def flash(message, category="message"):
      	"""
      	这里面将分类的信息放在列表的前面,然后将错误描述信息放在后面,flashes.append()
      	"""
        flashes = session.get("_flashes", [])
        flashes.append((category, message))
        session["_flashes"] = flashes
        message_flashed.send(
            current_app._get_current_object(), message=message, category=category
        )
    # 获取错误信息
    def get_flashed_messages(with_categories=False, category_filter=()):
      
         if category_filter:
              # 获取固定分类下面的错误信息
            flashes = list(filter(lambda f: f[0] in category_filter, flashes))
        if not with_categories:
            # 没有分类则将全部的错误信息进行返回
            return [x[1] for x in flashes]
        return flashes
    
posted @ 2021-11-06 20:05  RandySun  阅读(281)  评论(0编辑  收藏  举报