知識點: 一、閃現 二、日誌html
Flask提供了一個功能方便向前端反饋消息,這個功能叫閃現。閃現的功能是基於session實現,因此咱們在使用閃現的時候須要配置secret_key。前端
咱們用一個上傳圖片的例子來實現閃現,當咱們上傳圖片成功後,給前端反饋一個消息。python
from flask import Flask, render_template, flash, request, url_for, redirect
import os
app = Flask(__name__)
app.config["SECRET_KEY"] = "python is good"
UPLOAD_FOLDER = os.path.join(os.getcwd(), 'media') # 圖片上傳路徑 = 當前工做目錄+media文件夾
@app.route('/')
def index():
return render_template('upload.html')
@app.route('/upload', methods=['GET', 'POST']) # 支持get、post請求
def upload(): # 視圖函數
file = request.files.get('file') # files獲取多媒體資源
filename = file.filename
file.save(os.path.join(UPLOAD_FOLDER, filename)) # 保存
flash('上傳成功') # 添加閃現信息
return redirect(url_for('index'))
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000, debug=True) # 運行程序
複製代碼
前端代碼數據庫
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#獲取閃現#}
{% for msg in get_flashed_messages() %}
<h1>{{ msg }}</h1>
{% endfor %}
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳">
</form>
</body>
</html>
複製代碼
選擇一張圖片,點擊上傳: flask
當刷新瀏覽器的時候,閃現消息消失。咱們能夠針對不一樣的場景,提供不一樣的分類。從而達到不一樣的反饋消息的樣式不一樣。 添加閃現消息的時候加個分類:瀏覽器
flash('上傳成功', 'success') # 添加閃現信息
複製代碼
前端獲取的時候能夠獲取分類:session
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#獲取閃現#}
{% for msg in get_flashed_messages(category_filter=['success']) %}
<h1 style="color: green">{{ msg }}</h1>
{% endfor %}
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳">
</form>
</body>
</html>
複製代碼
咱們在瀏覽器調試一下: app
ERROR:這個級別的日誌意味着系統中發生了很是嚴重的問題,必須有人立刻處理,好比數據庫不可用了,系統的關鍵業務流程走不下去了等等。不少人在實際開發的時候,不會去區分問題的重要程度,只要有問題就error記錄下來,其實這樣是很是不負責任的,由於對於成熟的系統,都會有一套完整的報錯機制,那這個錯誤信息何時須要發出來,不少都是依據單位時間內error日誌的數量來肯定的。所以若是咱們不分輕重緩急,一概error對待,就會徒增報錯的頻率,長此以往,咱們的救火隊員對錯誤警報就不會那麼在乎,這個警報也就失去了原始的意義。函數
WARN:發生這個級別的問題時,處理過程能夠繼續,但必需要對這個問題給予額外的關注。假設咱們如今有一個系統,但願用戶每個月更換一次密碼,而到期後,若是用戶沒有更新密碼咱們還要讓用戶能夠繼續登陸,這種狀況下,咱們在記錄日誌時就須要使用WARN級別了,也就是容許這種狀況存在,但必須及時作跟蹤檢查。post
INFO:這個級別的日誌咱們用的也是比較多,它通常的使用場景是重要的業務處理已經結束,咱們經過這些INFO級別的日誌信息,能夠很快的瞭解應用正在作什麼。咱們以在12306上買火車票爲例,對每一張票對應一個INFO信息描述「[who] booked ticket from [where] to [where]」。
DEBUG和TRACE:咱們把這兩個級別放在一塊兒說,是應爲這兩個級別的日誌是隻限於開發人員使用的,用來在開發過程當中進行調試,可是其實咱們有時候很難將DEBUG和TRACE區分開來,通常狀況下,咱們使用DEBUG足以。
app.logger.debug('A value for debugging')
app.logger.warning('A warning occurred (%d apples)', 42)
app.logger.error('An error occurred')
複製代碼
如,放在咱們上面的代碼中,咱們但願在上傳成功以後,把這條信息記錄一下:
app.logger.info(filename + '上傳成功了.....')
複製代碼
歡迎關注個人公衆號: