Flaskで開発をする場合にデバッグをして、エラーを発見することは非常に重要である。
デバッグの設定を入れるには、複数の方法があるが、ここでは、いくつか紹介した。
debug=Trueで実行する
Flaskのアプリケーションを立ち上げるさい(app.run())、オプションとして、debug=Trueとするとデバッグをすることができる。
実際に見ていこう
Example
- デバッグモードでのアプリケーションを実行
app = Flask(__name__)
@app.route('/index')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True) # debug=Trueとするとデバッグモードで立ち上がる
これを実行するとターミナルには、PINが表示される。
- ターミナルの表示内容
エラー時の解析には、このPINを利用する。
- エラー画面
以下に、エラー画面を表示した。
このとき、エラー画面最下部に見えるエラーメッセージの右端のターミナルのようなものをクリックする。
すると、PINの入力が求められるので、ターミナルに表示されていたPINを入力する。
- PINを入力する
すると、コンソールが表示されて、様々な値を入力して何が正しいのか確かめる。
- コンソールが表示される
app作成時にdebugの設定を書き込む
FlaskはデフォルトでDEBUGがFalseとなって実行されるが、これを直接いじるとDEBUG=Trueとして実行されて、デバッグが可能になる。
Example
- DEBUGにして実行する
app.config['DEBUG'] = True# デバッグモードをTrueにする
デバッグの手順の続きは、上記(debug=Trueで実行する)と同様なので省略する。
設定ファイルからDEBUGの設定を読み込む
Flaskの設定を別に記述して、それを設定として読み込むことでDEBUGすることもできる。
これは、本番環境と、開発環境でDEBUGの設定を分けたい場合などに便利なやり方である。
Example
- 設定を記述する
DEBUG = True # debugの設定
次に、これをapp.pyから読み込む
- app.pyの記述
app = Flask(__name__)
app.config.from_object('config.DevelopmentConfig') # configファイルからFLaskの設定を読み込む
@app.route('/index')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
他にも設定の読込み方法は、色々あるが、詳細は公式サイトを参考にされるとよい。
(公式サイト)
デバッグの手順の続きは、上記(debug=Trueで実行する)と同様なので省略する。
実行時にFLASK_DEBUG=1を環境変数に入れて実行する
環境変数にFLASK_DEBUG=1を入れてアプリケーションを実行するとデバッグモードで実行される。
export FLASK_DEBUG=1 (windowsのコマンドプロンプトの場合set)
python -m flask run --host=0.0.0.0
デバッグの手順の続きは、上記(debug=Trueで実行する)と同様なので省略する。
VSCodeでデバッグ実行し、コードを実行途中で止める
VSCodeでデバッグするには、画面左の虫のボタンを押して、デバッグ画面に遷移し、デバッグで実行すればよい。
1つ1つ手順を見ていく。
Example
- 1. コードを止めたい場所に印をつける
コードの左側をクリックすると赤い丸がつく、コードを途中で止めて、実行状態を確認したい場所に赤い丸をつける。
- 2. デバッグ実行する
デバッグマークを選択して、実効とデバッグでflaskを選択する。
- 3. 1で印をつけた場所が実行されるように画面遷移する
アプリケーションが立ち上がったら、画面遷移を行い、1で印をつけた部分を実行させると。VSCodeが印をつけた部分で処理を止め、処理の状態を確認できる。
このとき、コードを追いながら変数の中身を確認できるようになる。
以上、Flaskでのデバッグの様々なやり方について紹介した。