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()
例子3. 模板里遍历flash
flasky中git reset --hard 4c
模板base.html的某个block中
{% for message in get_flashed_messages() %}
后台代码
flash('Looks like you have changed your name!')