# Flask實作_基礎_04_什麼是app.debug? ###### tags: `python` `flask` 開發過程中我們會不斷的調整、重新啟動、調整、重新啟動,即使是一個小動作,做多了也會覺得很煩,利用flask開發的過程中有什麼方法可以幫我們減化? ## 作業說明 在前面的案例中,執行`app.run()`之前,看到了一段`app.debug = True`,如下: ```python= if __name__ == '__main__': app.debug = True app.run() ``` 下面我們利用三個範例來瞭解設置與否的差異。 :::info `app.debug`主要是在開發環境中做的一個設置<sub>(後面會明白它的設置方式有很多種)</sub> ::: :::danger 很重要的一點是,在正式環境中是絕對不會設置`app.debug=True` ::: ### 範例_1_異常顯示的差異 回到之前的範例 ```python= from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello man' @app.route('/age') def userage(): age = 3 return 'i am ' + age + ' years old' # 故意造成型別錯誤 if __name__ == '__main__': # app.debug = True app.run() ``` 上面的案例會報錯,因為整數是無法跟字串串接,然後註解`app.debug=True`,這時候去瀏灠這個路由的時候會出現下圖錯誤: ![](https://i.imgur.com/3f7Ydlh.png) 然後,將`app.debug=True`取消註解,再測試一次,異常的錯誤訊息不同了,如果是上圖的錯誤訊息相信很難去判斷異常來源。 ![](https://i.imgur.com/wfkDqPw.png) ### 範例_2_自動重新啟動專案 在設置`app.debug=True`情況下,程式碼的異動會觸發專案重新啟動,你不需要每次重新執行,這無形之中替開發人員節省了很多開開關關的時間。 ### 範例_3_PIN CODE 在設置`app.debug=True`情況下,執行專案的時候會看到一個PIN CODE,如下圖說明: ![](https://i.imgur.com/uw3XbJc.png) 當網頁發生錯誤的時候,在錯誤佇列上滑鼠移過去會出現終端機的圖形,你可以直接在網頁上開啟終端機,它會要求你輸入PIN CODE,接著你就可以直接在終端機上做除錯測試,如下圖: ![](https://i.imgur.com/tsNAMD4.png) ![](https://i.imgur.com/cxXSpTv.png) ## 總結 透過DEBUG模式,在開發過程中可以快速的發現異常、自動重新啟動專案,但要特別的再說明一次,永遠不要在正式環境下設置`app.debug=True`。 正常情況下我們會有開發、測試、正式等三個環境,因此我們在flask配置上會有區隔的需求,後續會談到config的設置。 **上一話:**[Flask實作_基礎_03_簡述url_for與route](https://hackmd.io/s/BkApyHhgf) **下一話:**[Flask實作_基礎_05_render_template](https://hackmd.io/s/HJkOuSagf)