一、閃現
閃現:閃現解決的問題,假設在a頁面操作出錯,c頁面(操作了多少頁面我都不管),跳轉到b頁面,在b頁面顯示a頁面錯誤信息;
Flask 提供了一個非常簡單的方法來使用閃現系統向用戶反饋信息。閃現系統使得在一個請求結束的時候記錄一個信息,然后在且僅僅在下一個請求中訪問這個數據
,強調flask閃現是基於flask
內置的session
的,利用瀏覽器的session
緩存閃現信息。所以必須設置secret_key
。
"""
閃現:
閃現解決的問題,假設在a頁面操作出錯,c頁面(操作了多少頁面我都不管),跳轉到b頁面,在b頁面顯示a頁面錯誤信息
"""
from flask import Flask, flash, get_flashed_messages, request, redirect
app = Flask(__name__)
app.secret_key = 'keykeykey'
@app.route('/index')
def index():
flash("超時錯誤")
flash("分類flash", category="分類名稱")
# 直接
return redirect('/error1')
@app.route('/error')
def error():
return "error ok"
@app.route('/error1')
def error1():
"""
展示錯誤信息
:return:
如果get_flashed_messages(with_category=True)
"""
data = get_flashed_messages(with_categories=True, category_filter=("分類名稱",))
data2 = get_flashed_messages()
print(data)
print(data2)
return "error2"
@app.route('/error2')
def error2():
data = get_flashed_messages()
print("eeror2", data)
return "ok1"
if __name__ == '__main__':
app.run()
總結:
-
用於頁面的跳轉
-
源碼分析
# flash函數 def flash(message, category="message"): """ 這里面將分類的信息放在列表的前面,然后將錯誤描述信息放在后面,flashes.append() """ flashes = session.get("_flashes", []) flashes.append((category, message)) session["_flashes"] = flashes message_flashed.send( current_app._get_current_object(), message=message, category=category ) # 獲取錯誤信息 def get_flashed_messages(with_categories=False, category_filter=()): if category_filter: # 獲取固定分類下面的錯誤信息 flashes = list(filter(lambda f: f[0] in category_filter, flashes)) if not with_categories: # 沒有分類則將全部的錯誤信息進行返回 return [x[1] for x in flashes] return flashes