해결된 질문
작성
·
101
0
섹션 8 flask 다양한 기능: 다양한 데코레이터
3분 37초
flask_deco.py 파일 실행 시
AttributeError: 'Flask' object has no attribute 'before_first_request'. Did you mean: '_got_first_request'?
라고 에러가 뜹니다.
검색 해 보니 Flask는 2.2.x 이후로 'before_first_request'를 더 이상 사용하지 않는다고 합니다.
before_first_request 는 어떻게 대체가 되는건지... 정보 검색이 어렵습니다.
어떻게 하면 될까요? 도와주세요~
답변 3
0
안녕하세요. 답변 도우미입니다.
이번 기회에 해당 영상도 새로 찍어서 업데이트하였고, 자료도 새로 다시 업데이트하여 업로드하였습니다.
관련 자료와 영상을 보시면 보다 선명히 이해하실 수 있으실 것 같습니다.
그래도 이슈가 있으시면 dream@fun-coding.org 로 메일로 가볍게 이야기해주시면 또 설명 드리겠습니다.
감사합니다.
0
안녕하세요. 답변 도우미입니다.
말씀하신 부분 다시 확인해보니, 제가 드린 자료에 이미 상세히 버전별 가이드를 넣어놓았습니다. 수업자료에서 다음 강의시 함께 보시는 다음 주피터노트북 파일에 상세히 추가 설명과 예제를 넣어놓았습니다.
7_flask_others.ipynb
괜찮으시면 해당 자료를 꼭 확인해보시면 좋을 것 같습니다. 그래도 이슈가 있으시면 dream@fun-coding.org 로 메일로 가볍게 이야기해주시면 또 설명 드리겠습니다.
감사합니다.
0
안녕하세요. 답변 도우미입니다.
우선 불편을 드려 죄송합니다. 관련 부분은 좀더 검토해서, 조만간 자료등으로 업데이트하겠습니다.
Flask 2.2.x 버전 이후로 before_first_request
데코레이터는 더 이상 지원되지 않으며, 해당 기능을 대체하기 위한 새로운 방식이 도입되었습니다. 이 문제를 해결하기 위해서는 기존의 before_first_request
를 대체하는 방법을 사용해야 합니다.
before_first_request
대신 before_request
를 사용하면 됩니다. before_request
는 첫 번째 요청뿐만 아니라, 매 요청 전에 실행되기 때문에 이를 적절히 처리하여 첫 번째 요청에만 실행되도록 코드를 작성할 수 있습니다.
기존 코드:
from flask import Flask
app = Flask(__name__)
@app.before_first_request
def initialize():
print("이 함수는 첫 번째 요청 전에만 실행됩니다.")
대체 코드:
from flask import Flask
app = Flask(__name__)
# 첫 번째 요청 여부를 확인하기 위한 플래그를 사용
first_request_handled = False
@app.before_request
def initialize():
global first_request_handled
if not first_request_handled:
print("이 함수는 첫 번째 요청 전에만 실행됩니다.")
first_request_handled = True
before_request
데코레이터는 모든 요청 전에 실행됩니다.
first_request_handled
플래그를 사용하여 첫 번째 요청 시에만 로직이 실행되도록 제한합니다.
첫 번째 요청이 처리되면 first_request_handled
를 True
로 변경하여 이후 요청에서는 실행되지 않도록 설정합니다.
이 방식으로 before_first_request
와 동일한 기능을 구현할 수 있습니다.
감사합니다. 잔재미코딩 드림
넵! 제가 주피터 노트북 파일을 잘 봤어야했는데...
내용 확인하였습니다.!
빠른 업데이트 감사합니다.!^^