Flask - 闪现flash

1. 像snap一样阅后即焚,在服务器端临时存储数据的地方,如显示错误信息。(也可以用session实现)

2. Flash的底层是session做的,所以要secret_key。可以看源码

3. flash()存储数据,get_flashed_messages()获得数据

例子1. flash向某个地方设置一个值,从某个地方获取设置过的所有值,并清除。

from flask import Flask,flash,get_flashed_messages

app = Flask(__name__)
app.secret_key = 'asdfasdf'
@app.route('/get')
def get():
    # 从某个地方获取设置过的所有值,并清除。
    data = get_flashed_messages()
    print(data)
    return 'Hello World!'


@app.route('/set')
def set():
    # 向某个地方设置一个值
    flash('大家好!')

    return 'Hello World!'


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

127.0.0.1:5000/get
127.0.0.1:5000/set
127.0.0.1:5000/get

例子2. 提高传输信息安全性。和可以分类,防止数据错乱。

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

app = Flask(__name__)
app.secret_key = 'I am secret_key'


@app.route('/')
def index():
    # 从某个地方获取设置过的所有值,并清除。
    val = request.args.get('name')
    if val == 'allin':
        return 'Hello World!'
    #把数据分类,放到闪现里。
    flash('超时错误',category="x1")
    # 1.return redirect('/error?msg=超时错误'),和下面的2一起看。这样写可能会出现安全问题,因为固定死URL的参数了。所以用flash来解决。
    return redirect('/error')


@app.route('/error')
def error():
    """
    展示错误信息
    :return:
    """
    # 2. data = request.args.get('msg')
    #通过分类,只拿这一类数据
    data = get_flashed_messages(category_filter=['x1'])
    if data:
        msg = data[0]
    else:
        msg = "..."
    return "错误信息:%s" %(msg,)


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

http://127.0.0.1:5000/?name=allin

例子3. 模板里遍历flash

flasky中git reset --hard 4c

模板base.html的某个block中

{% for message in get_flashed_messages() %}

后台代码

flash('Looks like you have changed your name!')
posted @ 2018-05-09 21:34  Rocin  阅读(330)  评论(0编辑  收藏  举报