Flask 디버그 모드

Salman Mehmood 2024년2월15일
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 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