1. 程式人生 > >python web開發-flask中消息閃現flash的應用

python web開發-flask中消息閃現flash的應用

參數 應用 jin info class 兩個 type align 反饋

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實現的。

python web開發-flask中消息閃現flash的應用