使用 Flask 開發過程中存在兩個常見的問題
- 當 Flask 程序出錯時,沒有提示錯誤的詳細信息
- 修改 Flask 源代碼后需要重啟 Flask 程序
這兩個問題非常的影響開發效率,因此 Flask 引入了 debug 模式解決以上問題
錯誤示例
#!/usr/bin/python3 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): 1/0 return '<b>hello world</b>' if __name__ == '__main__': app.run()
第七行,存在一個除以零的錯誤,在瀏覽器中訪問 Flask ,會報錯
瀏覽器中提示 Internal Server Error,表示服務端程序出現錯誤,但是沒有給出錯誤的詳細信息,即產生錯誤的文件、函數、行號等位置信息,排查錯誤非常不方便
修改源代碼后需要重啟
開發 Flask 程序有如下 3 個步驟:
- 編輯 Flask 源程序
- 在命令行中啟動 Flask 程序
- 在瀏覽器中訪問 Flask 程序
每次對 Flask 源程序進行修改后,都需要重啟動 Flask 程序
例如,編寫如下 Flask 程序:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return '<b>hello world</b>' if __name__ == '__main__': app.run()
程序的功能:訪問頁面 / 時,返回文本 ‘hello world’,現在希望返回文本 ‘HELLO WORLD’,需要做如下工作:
- 切換到編輯器,編輯 Flask 源程序,將 ‘hello world’ 修改為 ‘HELLO WORLD’
- 切換到終端,終止原先運行的 Flask 程序,再次運行 Flask 程序
- 切換到瀏覽器,訪問頁面 /
在開發的過程中,需要在編輯器、終端、瀏覽器這 3 個程序之間來回切換,非常的繁瑣。
這個時候,我們就需要使用 Debug 模式來快速解決上面的這兩個問題
Flask 的 Debug 模式
Flask 程序可以運行在 Debug 模式下,Debug 模式提供了如下功能:
- 當 Flask 程序出現錯誤時,在瀏覽器中提示錯誤的詳細信息
- 修改 Flask 程序代碼后,Flask 程序會自動重新加載,不需要重啟 Flask 程序,即可在瀏覽器中看到修改后的效果
開啟 debug 模式
from flask import Flask app = Flask(__name__) if __name__ == '__main__': app.run(debug = True)
加個 debug = True 就好啦
如果加了還是不生效呢?
https://www.cnblogs.com/poloyy/p/14993520.html
debug 模式開啟后的控制台輸出
FLASK_APP = 4_debug.py FLASK_ENV = development FLASK_DEBUG = 1 In folder /Users/polo/Downloads/Flask_learning /usr/bin/python3 -m flask run * Serving Flask app '4_debug.py' (lazy loading) * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 233-208-558
Debug mode: on,表示 Flask 程序已經進入了調試模式
開啟后,再次運行上面的代碼,然后訪問瀏覽器
瀏覽器中顯示錯誤類型 ZeroDivisionError,並給出了錯誤的詳細位置:文件名 line 15, in hello_world,給調試程序提供了方便
修改源碼不再需要重啟 Flask
修改代碼並保存,Flask 就能識別到修改,然后重新加載,下圖是對應的控制台輸出內容
這個時候直接再次訪問瀏覽器就能看到修改后的效果了
總結