當前位置:網站首頁>flask入門教程(6) - 消息閃現
flask入門教程(6) - 消息閃現
2022-01-27 19:33:01 【Ejasmine】
消息閃現
一個應用當然要有合適的反饋給用戶,比如注册時可能反饋給用戶:
你的用戶名重複了
這時候你就會更改你的用戶名,flask自然也提供了這個方法:flash
flash
使用flash函數我們可以閃現消息,現調整目錄結構為:
- static
- test.jpg
- templates
- index.html
- app.py
這裏index.html需要用到{% %}
語法,注意這裏面嵌入if或者for是這樣的,這裏以for舉例:
{% for i in lst %}
<p>i</p>
{% endfor %}
這裏不需要冒號,也不需要縮進,只是使用endfor
結束,而if則是以endif
結束。
注意flash的內部源碼需要使用session,大家現在只要記住session這東西叫會話,是用來存儲數據的就好,以後我們會詳細講解。
由於session需要使用密匙,那麼這個密匙怎麼得到呢,其實自己起一個就好,但是這肯定不隨機,這時候我們可以用os.urandom函數生成密匙,在命令行輸入下列命令:
python -c "print(__import__('os').urandom(24))"
接下來會輸出一個隨機生成的字符串,你可以複制下來作為密匙,當然你也可以直接這樣:
app.config["SECRET_KEY"] = os.urandom(24)
我們繼續看html
這裏html中獲取flash的消息需要用get_flashed_messages函數,下面是index.html的代碼:
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
{% for msg in get_flashed_messages() %}
<p>{
{ msg }}</p>
{% endfor %}
<img src="{
{ url_for('static', filename='test.jpg') }}">
</body>
</html>
app.py使用flash閃現消息:
# app.py
import os
from flask import Flask, render_template, flash
app = Flask(__name__)
app.config["SECRET_KEY"] = os.urandom(24)
@app.route("/")
def index():
flash("Hello World!")
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
打開網頁,你會看到你的消息顯示在了上面:
當然flash還有更多功能,可以指定flash的等級,加上with_categories=true
後就可以帶上等級獲取消息了,默認等級是message。這裏是index.html改變後的代碼:
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
{% for category, msg in get_flashed_messages(with_categories=true) %}
<p>{
{ category }}: {
{ msg }}</p>
{% endfor %}
<img src="{
{ url_for('static', filename='test.jpg') }}">
</body>
</html>
加上category後的app.py如下:
# app.py
import os
from flask import Flask, render_template, flash
app = Flask(__name__)
app.config["SECRET_KEY"] = os.urandom(24)
@app.route("/")
def index():
flash("Hello World!")
flash("Error!", "error")
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
打開網頁會發現category顯示出來了:
flash還可以根據消息類別過濾消息,這裏就不展開了,可以在index.html加上參數:
category_filter=["error"]
信號
flask還為我們提供了一個函數,用作在消息發送出後發送一個信號,我們可以把這個信號連接上一個函數,也就是訂閱者,就像我們之後會講到的信號一樣:
from flask import message_flashed
record = []
def record_flash_message(sender, message, category, **kwargs):
record.append((sender, message, category, kw))
message_flashed.connect(record_flash_message, app)
下次見!
版權聲明
本文為[Ejasmine]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201271933007579.html
邊欄推薦
猜你喜歡
隨機推薦
- uniapp上傳圖片及組件傳值
- 瑞利年金險資金保障安全嗎?收益高不高啊?
- 華為手機USB連不上電腦的解决方法
- Flutter 2,移動金融應用開發
- 關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結
- 關於用ffmpeg轉手機視頻發現視頻長寬倒了的問題
- 函數 / 類模板--模板2
- 數組中的第k個最大的元素--優先級隊列、排序、堆、排序
- 單片機實例27——ADC0809A/D轉換器基本應用技術(硬件電路圖+匯編程序+C語言程序)
- Collection集合的學習
- 一場面試結束,某度員工從事Android 5年為何還是初級工程師?
- 3本書閱讀筆記【人月神話-Go語言實戰-研發能力持續成長路線】01
- PHP垃圾回收機制
- 【電子技術】什麼是LFSR?
- 死鎖?如何定比特到死鎖?如何修複死鎖?(jps和jstack兩個工具)
- 快樂寒假 22/01/20
- image
- 噴程序員?SURE?
- LDO分壓電阻計算小工具
- 面試之求一串字符串中每個字符的出現次數
- 【ISO15765_UDS&OBD診斷】-01-概述
- 【Mysql上分之路】第九篇:Mysql存儲引擎
- RHCE 第一次作業
- 2021.10.16我的第一篇博客:一切皆有可能!
- CTA-敏感行為-讀取IMEI
- 面試被問怎麼排查平時遇到的系統CPU飆高和頻繁GC,該怎麼回答?
- nuxt項目總結-綜合
- 自然語言處理學習筆記(一)
- C語言第一課
- 各比特大佬,Spark的重點難點系列暫時更新完畢
- 基於 esbuild 的 universal bundler 設計
- XCTFre逆向(四):insanity
- 理解什麼是真正的並發數
- JVM腦圖
- 【Pytorch(四)】學習如何使用 PyTorch 讀取並處理數據集
- 函數棧幀的創建與銷毀
- 構建神經網絡- 手寫字體識別案例
- 多模態生成模型ERNIE-VILG
- kotlin不容忽視的小細節
- 備戰一年,終於斬獲騰訊T3,我堅信成功是可以複制的