Flask(6)- debug 模式


使用 Flask 開發過程中存在兩個常見的問題

  1. 當 Flask 程序出錯時,沒有提示錯誤的詳細信息
  2. 修改 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 個步驟:

  1. 編輯 Flask 源程序
  2. 在命令行中啟動 Flask 程序
  3. 在瀏覽器中訪問 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’,需要做如下工作:

  1. 切換到編輯器,編輯 Flask 源程序,將 ‘hello world’ 修改為 ‘HELLO WORLD’
  2. 切換到終端,終止原先運行的 Flask 程序,再次運行 Flask 程序
  3. 切換到瀏覽器,訪問頁面 /

在開發的過程中,需要在編輯器、終端、瀏覽器這 3 個程序之間來回切換,非常的繁瑣。

這個時候,我們就需要使用 Debug 模式來快速解決上面的這兩個問題

 

Flask 的 Debug 模式

Flask 程序可以運行在 Debug 模式下,Debug 模式提供了如下功能:

  1. 當 Flask 程序出現錯誤時,在瀏覽器中提示錯誤的詳細信息
  2. 修改 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 就能識別到修改,然后重新加載,下圖是對應的控制台輸出內容

這個時候直接再次訪問瀏覽器就能看到修改后的效果了

 

總結 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM