閃現


一、閃現

閃現:閃現解決的問題,假設在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()

總結:

  1. 用於頁面的跳轉

  2. 源碼分析

    # 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
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM