본문 바로가기

백엔드

블루프린트 라우트 함수 관리

반응형
from flask import Flask
def create_app():
     app = Flask(__name__)
     @app.route('/')                              --- 매핑 만들어줌 : 라우트 함수
     def hello_pybo():                            --- URL에서 /에 매핑돠는 함수
         return 'Hello, pybo!'
     return app

이전에 작성해본 코드는 새로운 URL이 생길 때마다 라우트 함수를 create_app 함수안에 계속 추가해야 하는 귀찮음이 있다. 이를 해결해주는 클래스가 블루프린트다.

 

블루프린트(Blueprint) : '청사진', 플라스크에서는 URL고 호출되는 함수의 관계를 확인할 수 있는 Blueprint 클래스를 의미

→ 라우트 함수를 구조적으로 관리할 수 있다.

 

 

 

01. 블루 프린트 생성하기

__init__.py 파일의 hello_pybo 함수에 블루프린트를 적용해보자.

pybo 디렉터리 아래에 views 디렉터리를 만든 다음 main_view.py 파일을 생성해 다음 코드를 작성하자.

이 코드는 pybo/__init__.py 파일에 있던 hello_pybo 함수를 main_views.py 파일에 그대로 옮긴 것이다. 단, 애너테이션이 @app.route에서 @bp.route로 변경되었다. 이 변화에 주목하자. @bp.route에서 bp는 Blueprint 클래스로 생성한 객체를 의미한다. 코드에서 보듯 Blueprint 클래스로 객체를 생성할 때는 이름, 모듈명, URL 프리픽스(url_prefix)값을 전달해야 한다.

 

02. 플라스크 앱 생성 시 블루프린트 적용하기

1단계에서 생성한 블루 프린트 파일을 적용하기 위해 __init__.py 파일을 다음과 같이 수정하자.

create_app 함수에 등록되었던 hello_pybo 함수 대신 블루프린트를 사용하도록 변경했다. 블루프린트를 사용하려면 main_views.py 파일에서 생성한 블루프린트 객체인 bp를 등록하면 된다.

 

03. 라우트 함수 등록하기

블루프린트를 적용했으니 이제 URL을 등록하고 사용해 보자. main_views.py 파일을 열어 hello_pybo 함수의 URL 매핑을 /에서 /hello로 바꾸고, index 함수를 추가해 URL 매핑을 /로 입력하자.

 

04. 라우트 함수 동작 확인하기

앞 단계에서 블루프린트를 이용해 등록한 라우트 함수에 따라 각 URL로 접속할 때 웹 서버가 제대로 동작하는지 확인해 보자. 웹 브라우저를 열고 localhost:5000과 localhost:5000/hello에 접속해 보자.

localhost:5000에 접속하면 라우터 /에 된 index 함수가 호출되어 ‘Pybo index’가 출력되고, localhost:5000/hello에 접속하면 라우터 /hello에 매핑된 hello_pybo 함수가 호출되어 ‘Hello, Pybo!’가 출력된다.

반응형