점프 투 플라스크

❗️ 이 글의 내용 출처 : 🌐위키독스 점프투 플라스크

2-01 플라스크 기초 다지기

⭐️ 플라스크 앱은 Flask 클래스로 만든 객체를 말한다

app = Flask(__name__)
  • 플라스크는 app 객체를 사용해 여러 가지 설정을 진행
  • 이와 같은 방식으로 app 객체를 전역으로 사용하면 프로젝트 규모가 커질수록 문제가 발생할 확률이 높아진다
  • 대표적으로 순환 참조(circular import) 오류

⭐️ 애플리케이션 팩토리 사용하기

myproject/pybo.py 파일을 myproject/pybo/__init__.py 파일로 대체해 보겠다

먼저 (myproject) c:\projects\myproject> mkdir pybo 명령어로 새로운 디렉터리를 만들어 준다

pybo.py 파일을 pybo/init.py 파일로 대체하고
📌 move pybo.py pybo/__init__.py

플라스크 서버를 실행해 보면

위와 같이 잘 작동하는 것을 볼 수 있다
대체한다는 것이 사실상 파일이름을 바꾸는 것이었다

단, flask run 명령은 반드시 C:/projects/myproject 디렉터리에서 실행해야한다. 다른 곳에서 실행하면 실행은 되지만 정상으로 동작하지 않는다. 앞으로도 서버를 실행할 때는 위치를 꼭 확인하자.

이제는 __init__.py 파일을 열고 create_app 함수를 선언해서 플라스크 객체를 생성하는 방식으로 코드를 수정하겠다

from flask import Flask

# app = Flask(__name__)     # 이렇게 app객체를 생성하는 방식에서

# 함수를 통해 app객체를 생성하고 반환하도록 바꿔보자
def create_app():
    app = Flask(__name__)

    @app.route('/')     # @pp.route()는 데코레이터
                        # 기존 함수를 변경하지 않고 추가 기능을 덧붙이는 함수
    def hello_pybo():
        return 'Hello, Pybo!'

     # return은 app 객체를 반환!
    return app

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

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

❗️❗️ 주의

  • 함수명으로 create_app 대신 다른 이름을 사용하면 정상으로 동작하지 않는다
  • create_app은 플라스크 내부에서 정의된 함수명이다.

이제 수정된 코드를 flask run으로 실행해보겠다

깔끔하게 실행된다 굿굿굿!

좋은 웹페이지 즐겨찾기