Flask 블루프린트로 라우트 함수 관리
create_app 에 @app.route(‘/’) 애너테이션과 같은 라우트 함수를 계속 추가하면 불편하므로 블루프린트라는 클래스를 사용한다.
블루프린트 사용하기
- 블루프린트 생성하기
cd pybo
mkdir views
touch main_views.py
# main_views.py
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
@bp.route('/')
def hello_pybo():
return 'Hello, Pybo!'
이 코드는 pybo/__init__.py 파일에 있던 hello_pybo 함수를 main_views.py 파일에 그대로 옮긴 것이다. 단, 애너테이션이 @app.route에서 @bp.route로 변경되었다. Blueprint 클래스로 객체를 생성할 때는 이름, 모듈명, URL 프리픽스 값을 전달해야 한다.
- 플라스크 앱 생성 시 블루프린트 적용하기
# __init__.py
from flask import Flask
def create_app():
app = Flask(__name__)
from .views import main_views
app.register_blueprint(main_views.bp)
return app
create_app 함수에 등록되었던 hello_pybo 함수 대신 블루 프린트를 사용하도록 변경하였다.
- 라우트 함수 등록하기
# main_views.py
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
@bp.route('/hello')
def hello_pybo():
return 'Hello, Pybo!'
@bp.route('/')
def index():
return 'Pybo index'
URL 매핑을 변경하였다.