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 앱을 디버그하는 이 간단한 방법을 보여 드리겠습니다. 다음 섹션에서는 디버깅하는 또 다른 방법을 배웁니다.
이 파일을 사용하여 서버를 시작하고 서버가 디버그 모드로 시작된 것을 볼 수 있습니다. 이제 파일을 변경하고 저장하면 디버그 모드가 변경 사항을 감지하고 서버를 자동으로 다시 시작합니다.
우리는 이것을 종료하고 다시 시작할 필요가 없습니다. 페이지를 새로고침하기만 하면 됩니다.
디버깅이 활성화되어 있는 동안 문제가 발생하면 어떻게 되는지 살펴보겠습니다. 예외를 일으키자:
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
가 발생하고 실패한 위치에 대한 역추적을 볼 수 있습니다. 실패한 소스를 볼 수 있습니다. 여기를 클릭하면 소스가 표시되고 대화형 모드가 있습니다.
작은 콘솔이 열리고 여기에서 약간의 변경을 수행하고 누구나 여기에서 코드를 실행할 수 있기 때문에 프로덕션 환경에서 이것을 원하지 않는 이유를 확인할 수 있습니다.
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()
페이지를 새로 고치면 도구 모음이 오른쪽에 나타납니다. 디버깅할 때 필요할 수 있는 유용한 것들을 많이 보여줍니다.
첫 번째는 버전입니다. 그것은 우리가 어떤 버전을 사용하고 있는지 알려주고, 다음 버전은 이 페이지를 생성하는 데 걸린 시간을 알려줍니다. 이 모든 변수를 직접 탐색할 수 있습니다.
콘솔이나 브라우저의 개발자 도구에서 디버거 내부를 볼 필요가 없더라도 이 기능이 얼마나 유용한지 알 수 있습니다.
템플릿 소스 코드:
<html>
<head>
<body>
<h1>Hi there, this is debug toolbar</h1>
</body>
</head>
</html>
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