학과공부

[데이터베이스] 과제를 위한 백엔드 공부 with flask - 3

SHSYCB 2023. 11. 6. 08:41

플라스크 앱은 아래 코드에서 보듯 Flask 클래스로 만든 객체를 의미한다

 

 

플라스크는 app 객체를 이용하여 여러가지 설정을 진행하는데, 이와 같은 방식으로 app 객체를 전역으로 사용하면 프로젝트 규모가 커질 수록 문제가 발생할 확률이 높아진다.

 

이러한 오류는 순환 참조(circular import)가 대표적이다

 

app 객체를 전역으로 사용할 때 발생하는 문제를 예방하기 위해서는 "애플리케이션 팩토리(application factory)를 사용하라"고 권한다

 

앞에서 만든 myproject/pybo.py 파일을 myproject/pybo/__init__.py 파일로 바꾸어 보자.

먼저 명령 프롬프트에서 아래 명령으로 myproject/pybo 디렉터리를 만든다.

 

그리고 move 명령어로 pybo.py 파일을 pybo/__init__.py 파일로 이동하자.

 

그리고 플라스크 서버를 실행

 

파일명을 바꾸어도 플라스크 서버가 잘 실행된다.

우리는 플라스크 기본 앱을 FLASK_APP=pybo로 설정했다.

따라서 이전에 pybo는 프로젝트 루트에 있는 pybo.py 파일을 가리켰지만,

이번에는 pybo 모듈 즉 pybo/__init__.py 파일을 가리킨다.

 

__init__.py 파일을 열고 create_app 함수를 선언하는 방식으로 코드를 수정하자.

 

 

create_app 함수가 app 객체를 생성해 반환하도록 코드를 수정했다.

이때 app 객체가 함수 안에서 사용되므로 hello_pybo 함수를 create_app 함수 안에 포함했다.

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

 

 

코드를 수정한 후 플라스크 서버를 다시 시작하면 오류 없이 잘 실행된다.

 

 

출처: https://wikidocs.net/81504

 

2-02 플라스크 애플리케이션 팩토리

* `[완성 소스]` : [github.com/pahkey/jump2flask/tree/2-02](https://github.com/pahkey/jump2flask/tree/2-…

wikidocs.net