• Flask flush 闪现


    闪现

    要用必须导入 flash , get_flashed_messages

    flash 用于存闪现的值。他有两个参数,1 messsage,用来存储信息 2 category ,用于给信息分类,该参数可以不传,不传就是分类为 ”messsage“

    get_flashed_messages 用是用来取闪现的值,他也有两个参数:1 with_category,拿到的结果是否需要带上分类名称,2 category_filter 是用来过滤我要取哪个分类下的信息。当然这个两个都是可选的

    注意点:
    1 设置flash,必须设置 app.secret_key="随便",因为flash是基于 session 的。
    2 闪现的值,不同的请求中只能取一次,当然在同一请求内是可以获取多次的。

    # 首先要导入flash 和 get_flashed_messages
    from flask import Flask, flash, get_flashed_messages
    
    app = Flask(__name__)
    # app.session_interface
    app.secret_key = "sdasd"
    
    
    # 什么闪现:就像session一样,也是一个页面设置,另一个页面使用,我不管你在哪个页面调用的
    # 只要调用一次,就清空了,
    # 闪现的作用,一般用信息处理。假设用户,a页面做操作,产生了信息。我希望在b页面内获取。
    # 但是我不知道用户在什么时候,访问b页面,但是只要用户一旦访问页面就把信息显示出来。
    # 同一页面,同次请求是可以拿多次的
    @app.route("/")
    def index():
        # 产生信息,message设置消息的,category给消息分类,如果不传默写用”message“
    
        flash("你错过了我")
    
        flash(message="你再次错过我", category="渣男")
        return "index"
    
    
    @app.route("/login/")
    def login():
        # (with_categories=True,消息是否要带上分类信息,category_filter=["渣男"]对消息进行过滤,取指定的分类消息
        print(get_flashed_messages(with_categories=True, category_filter=["渣男"]))
        print(get_flashed_messages())
        return "login"
    
    
    @app.route("/test/")
    def test():
        print(get_flashed_messages())
        return "test"
    
    
    if __name__ == '__main__':
        app.run()
    

    闪现有什么作用呢?

    比如:假设在A页面做个操作,但该操作失败了,要跳转到B页面并显示这些错误信息

    from flask import Flask,flash,get_flashed_messages,request,redirect
    app = Flask(__name__)
    app.debug = True
    app.secret_key="1234"
    
    @app.route("/index")
    def index():
        # get请求用request.args.get, v是接受参数的变量
        # 浏览器请求:
        val = request.args.get('v')
        if val =="body":
            return "hello World, guys"
        # 如果请求参数不是body,则跳转到错误页面,需要将错误信息flash,也就是设置错误值到某个地方
        # A.flash不分类,直接设置值
        flash("前端输入参数错误")
        # B.flash还可以对错误信息,进行分类
        flash("前端输入参数错误", category="x1")
        return redirect("/error")
    
    @app.route("/error")
    def error():
        '''
        显示错误信息
        '''
        # 跳转到error页面后,请求时获取错误信息
        # A.flash没有分类时
        # data = get_flashed_messages()   # 获取的就是flash的值
        # B. 对于有分类的,取值时可以通过 category_filter 根据分类取错误信息
        data = get_flashed_messages(category_filter=['x1'])
        # 可能有很多的错误信息,也可以按照索引的方式取出错误值
        if data:
            msg = data[0]
        else:
            msg = "..."
        return "错误信息:%s" %(msg)
    
    if __name__=="__main__":
        app.run()
    

    闪现是怎么实现的呢?

    其实,它就是通过 session 做的,先把数据存在 session 里,数据如果在 session 里,只要不删,就永远在。

    然后,如果值被拿走,就会通过 session.pop()的方式给拿走。

    所以,就不用担心数据错乱。因为每个用户都会有自己的一个 session,基于 session 就会把数据隔离开了。

    闪现的应用:

      对临时数据操作,如:显示错误信息

  • 相关阅读:
    JMeter BeanShell示例
    xpath 函数大全
    XPath教程
    clickhouse集群部署21.6
    mysqldump常见用法(转载)
    从零到一k8s(四)云原生存储Longhorn
    从零到一k8s(三)dns 配置
    centos matplot中文字体显示方框问题解决
    python2 requests模块警告
    python将多张图片显示在一张画布上
  • 原文地址:https://www.cnblogs.com/kai-/p/12521263.html
Copyright © 2020-2023  润新知