本文旨在補充《超圖解Python程式設計入門》第九章「使用Flask建置網站服務」單元,建立儲存使用者上傳影像圖檔的Python伺服器端程式,在此之前,先介紹Flask框架提供的一個「把Python程式的字串資料傳遞給HTML網頁樣版」的flash message(以下譯作「快閃訊息」)功能。
flash()與get_flashed_messages()函式
假設Python Flask的應用程式檔名是app.py,我們要從中傳遞三個文字訊息給index.html樣版,讓它整合成項目條列文字。請先在Python程式檔引用flask套件的flash模組,即可透過flash()函式傳遞字串。
在HTML樣版網頁中執行get_flashed_messages()函式(直譯為「取得快閃訊息」),將能傳回列表型態的快閃訊息字串內容。

使用 {% with %} … {% endwith %} 定義HTML樣版的區域變數
上面的HTML樣版透過set建立變數並儲存快閃訊息列表。Flask官方網站的處理上傳檔案說明頁裡的範例程式,透過 {% with %} … {% endwith %} 指令定義區域變數來儲存快閃訊息列表,像這樣:

底下是另一個定義區域變數的寫法,如果你需要在HTML樣版的某個區塊定義多個區域變數,就可以用這種寫法:

設置與篩選flash()快閃訊息的分類字串
flash()函式可接收兩個參數,第2個參數也是字串格式,內容是我們自訂的「訊息分類名稱」,例如,我們可以自行設定:”debug”(除錯)、”info”(資訊)、”warn”(警告)…等分類名稱。
底下程式中的flash()包含兩種分類訊息,但HTML樣版僅讀取其中一種分類。get_flashed_messages()函式的第一個參數False,代表不讀取快閃訊息中的分類字串,這不會影響訊息篩選作業。

get_flashed_messages()函式的第一個參數設成True,傳回的快閃訊息格式將如同底下這樣,每一則訊息都附帶分類字串:
[ ('warn', '堅持'), ('warn', '不要臉'), ('info', '堅持不要臉') ]
所以for迴圈要額外設置一個儲存「分類名稱」的變數(此例命名為c):

看的有點霧煞煞
如同本文開頭所述,這是第九章的補充內容,所以我假設讀者具備Python和Flask的基礎。