Flask デバッグモード

Salman Mehmood 2022年8月18日
Flask デバッグモード

この説明では、Flask でデバッグモードを使用したときに得られるいくつかのことと、デバッガーツールバーを提供する拡張機能の使用方法を学習します。

Flask でデバッグモードを有効にする

デバッグモードは開発環境用です。アプリを開発しているときはそれを使用できますが、アプリのライブバージョンがある場合は、デバッグモードをオフにする必要があります。

基本的な Flask アプリを作成し、run() メソッド内でデバッグモードをオンにしました。

from flask import Flask

app = Flask(__name__)


@app.route("/", methods=["GET"])
def Basic_DEBUG():
    return "Hi there, debug mode is on"


if __name__ == "__main__":
    app.run(debug=True)

他にも方法はありますが、ここでは、Flask アプリをデバッグするこの簡単な方法を紹介します。次のセクションでは、それをデバッグする別の方法を学習します。

このファイルを使用してサーバーを起動してみましょう。サーバーがデバッグモードで起動していることがわかります。ここで、ファイルに変更を加えて保存すると、デバッグモードで変更が検出され、サーバーが自動的に再起動されます。

これを終了して再起動する必要はありません。ページを更新するだけです。

Flask デバッグモード出力 1

デバッグがアクティブなときに問題が発生した場合に何が起こるかを見てみましょう。例外を発生させましょう:

from flask import Flask

app = Flask(__name__)


@app.route("/", methods=["GET"])
def Basic_DEBUG():
    CHECK = 6 / 0
    return "Hi there, debug mode is on"


if __name__ == "__main__":
    app.run(debug=True)

保存してページを更新すると、ZeroDivisionError がスローされ、失敗した場所に関するトレースバックを確認できます。失敗した場所の原因を確認できます。ここをクリックすると、ソースが表示され、インタラクティブモードが表示されます。

小さなコンソールが開きます。ここでいくつかの変更を加えて、誰でもここでコードを実行できるため、本番環境でこれを望まない理由を確認できます。

Flask デバッグモード出力 2

DebugToolbarExtension を使用してデバッガツールをレンダリングする

これがどのように機能するか、Flask アプリを開発するときにどこで役立つかを説明します。まず、次のコマンドを使用してこのパッケージをインストールする必要があります。

pip install flask-debugtoolbar

インストールしたら、Flask アプリで設定する必要があります。これは視覚的なツールバーであり、テンプレートで機能します。これを使用できる唯一の方法は、jinja テンプレートを使用している場合です。そのため、render_template() を含めて HTML ファイルを作成します。

次に、デバッグツールバーの拡張機能について説明します。これを使用するには、最初にインポートする必要があるのは DebugToolbarExtension です。次に、いくつかの構成を設定する必要があります。

debug プロパティを True に設定します。ツールバーをインスタンス化する前に、これを宣言する必要があります。次に、必要な他の構成値は SECRET_KEY です。

次に、DebugToolbarExtension() と呼ばれるデバッグツールバーをインスタンス化して、アプリに渡す必要があります。

TBAR = DebugToolbarExtension(app)

デバッグツールバーをインスタンス化すると、応答として返されたテンプレートにツールバーが自動的に挿入されます。

from flask import Flask, render_template
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)

app.debug = True
app.config["SECRET_KEY"] = "TEST_KEY"
TBAR = DebugToolbarExtension(app)


@app.route("/", methods=["GET"])
def DEBUG_ToolBar():
    return render_template("index.html")


if __name__ == "__main__":
    app.run()

ページを更新すると、右側にツールバーが表示されます。これは、デバッグ時に必要になる可能性のある多くの便利なものを示しています。

最初のものはバージョンです。使用しているバージョンがわかります。次のバージョンは、このページの生成にかかった時間を示しています。これらすべての変数を自分で調べることができます。

Flask デバッグモード出力 3

コンソールまたはブラウザーの開発者ツールでデバッガーの内部を調べる必要がない場合でも、この機能がどのように役立つかを確認できます。

テンプレートのソースコード:

<html>
    <head>
        <body>
            <h1>Hi there, this is debug toolbar</h1>
        </body>
    </head>
</html>
著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn