Flash中的消息闪现,在官方的解释是用来给用户做出反馈。不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻的请求中“闪现”,第三次请求就不存在这个flash了。
下面我们用一个例子来说明一个是如何“闪”的。
首先引入flash和get_flashed_message方法
from flask import Flask,url_for,render_template,request,make_response,session,
flash,get_flashed_messages
然后我们定义两个方法,一个用于记录flash,一个用于显示flash。
@app.route("/addflash")
def addFlash():
flash("bling bling")
return "added a flash"
@app.route("/getFlash/")
def getFlash():
msgs = get_flashed_messages()
msgStr = ""
for msg in msgs:
msgStr += msg+","
return msgStr
然后我们运行程序,先访问/addflash这个地址,效果如下:
按代码的逻辑,此时应该是记录了一个bling bling的flash,然后我们在/getFlash中获取这个flash。
可以看到,我们获取到了bling bling这个flash.按上面所说,这个flash只存在于两次相临的请求中,那就是说,如果我们刷新一个/getFlash,重新发起一个请求的时候,bling bling这个flash应该是获取不到,下面我们刷新页面来做一下验证,刷新后效果如下:
页面一片空白,说明bling bling这个flash的确是没有被本次请求获取到。
对于flash还有一个type的参数,可以用来处理不同类型的flash,具体的应用可以参考官方文档:
http://docs.jinkan.org/docs/flask/patterns/flashing.html#message-flashing-pattern
再深入一层,我们进到flash的定义中会发现,其实flash底层是用session实现的。