- 介紹:flask
flash :閃現
一個好的應用和用戶界面都須要良好的反饋。
若是用戶得不到足夠的反饋,那麼應用 最終會被用戶唾棄。
Flask 的閃現系統提供了一個良好的反饋方式。
- 工做方式:瀏覽器
基本工做方式是:
在且只在下一個請求中訪問上一個請求結束時記錄的消息。
注意: 瀏覽器會限制 cookie 的大小,有時候網絡服務器也會。
這樣若是消息比會話 cookie 大的話,那麼會致使消息閃現靜默失敗
- flash()服務器
- 該函數是將須要消息存入flash等待下次請求進來時的獲取cookie
- 在後臺視圖中想要使用 flash須要導入:網絡
from Flask import flash
- flash() 中的兩個參數:session
- message:app
- 添加到flash中的數據函數
- category:spa
- 消息的類別,默認爲 messagecode
- flash 源碼:
def flash(message, category='message'): # 獲取session中的 "_flashes" 的列表,若沒有賦值爲空列表 flashes = session.get('_flashes', []) # 將須要添加的message 與category組成元組放入列表flashes flashes.append((category, message)) # 將flashes列表添加到session中 session['_flashes'] = flashes # 當響應時,將該session添加到用戶瀏覽器 message_flashed.send(current_app._get_current_object(), message=message, category=category)
- get_flashed_messages()
- 獲取存在flash中的消息,而且刪除flash中的這個消息;
- 在後臺視圖中想要使用 flash須要導入
from flask import get_flashed_messages
- 母板中直接調用便可;
{% with messages = get_flashed_messages() %}
{{ messages }}
{% endwith %}
- 被取到後,flash中的數據將被 pop掉
- 源碼:
def get_flashed_messages(with_categories=False, category_filter=[]): # 第一次請求進來時,去獲取flashes列表,可是由於沒有加入因此爲空列表 flashes = _request_ctx_stack.top.flashes if flashes is None: _request_ctx_stack.top.flashes = flashes = session.pop('_flashes') \ if '_flashes' in session else [] 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