본문 바로가기

window 환경에서 개발하기/Flask

Flask 개발 기초 ② 애플리케이션 팩토리(application factory)

반응형
[점프 투 플라스크]를 참고해서 작성한 글입니다.
https://wikidocs.net/81504

 

 

flask 프로젝트 구조 예

 

 

 

이번 포스팅은 __init__.py 파일에 대해 알아보겠습니다.

 

 

 

 

 

 

 

1. pybo.py를 __init__.py 파일로 변경

 

 

 

이전 포스팅에서 pybo.py 파일을 만들어서 flask run으로 동작시켜 봤습니다.

 

 

현재 작업 상태

 

 

이 때 만든 pybo.py 파일을 pybo 디렉토리를 만들어서 그 안에 넣어줄 겁니다.

 

 

 

수정 결과

 

 

 

 

2. 애플리케이션 팩토리(application factory)

 

 

그리고 파일 코드를 create_app 함수를 선언하는 방식으로 수정합니다.

 

 

# c:\myproject\shop\pybo\__init__.py
from flask import Flask

def create_app():
    app = Flask(__name__)

    @app.route('/')
    def hello_pybo():
        return 'Hello, Pybo!'

    return app

 

 

 

 

 

 

 

 

pybo.py를 __init__.py 파일로 변경하고, create_app 함수가 app 객체를 생성해 반환하도록 코드를 수정하는 이유는

 

 

app 객체(app = Flask(__name__))를 전역으로 사용하면 오류가 발생하기 때문입니다.

(순환 참조 오류 등)

 

 

 

플라스크 공식 홈페이지에서는 이 문제를 예방하려면 애플리케이션 팩토리(application factory)를 사용하라고 하는데,

 

여기서 사용된 create_app 함수가 바로 애플리케이션 팩토리입니다.

 

 

 

 


create_app은 플라스크 내부에서 정의된 함수명임으로

 

create_app 대신 다른 이름을 사용하면 정상작동하지 않으니 주의가 필요합니다.

 

 

 

 

 

 

 

 

다음 포스팅에서는 API 라우팅 함수를 관리하는 방법을 알아보겠습니다.

 

 

 

반응형