블루프린트
새로운 URL 매핑이 필요할 때마다 라우팅 함수를 create_app 함수 안에 계속 추가해야 한다.
이를 해결하고자 URL과 함수의 매핑을 관리하기 위해 사용하는 것이 블루프린트다.
블루프린트 생성
view 디렉터리 생성
main_views.py 파일 생성
[projects\myproject\pybo\views\main_views.py]
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
@bp.route('/')
def hello_pybo():
return 'Hello, Pybo!'
create_app 함수 안에 있던 hello_pybo 함수를 옮긴 것이다.
@app.route -> @bp.route
bp = Blueprint('main', __name__, url_prefix='/')
__name__은 모듈명인 main_views가 인수러 전달된다.
'main'은 블루프린트의 별칭으로 나중에 사용할 url_for 함수에서 사용된다.
url_prefix는 라우팅 함수의 어노테이션 URL 앞에 기본으로 붙일 접두어 URL을 의미한다.
ex) url_prefix('/main') 라고 입력하면 hello_pybo를 호출하는 함수는 localhost:5000/main/
블루프린트 등록
[projects\myproject\pybo\__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
from .views import main_views
views 모듈 내 main_views를 불러온 것이다.
app.register_bluprint(main_views.bp)
main_views.py 파일에 생성한 블루프린트 객체 bp 등록
create_app 함수에 있던 hello_pybo 함수는 필요 없으므로 제거한다.
라우팅 함수 추가
[projects\myproject\pybo\views\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'
@bp.route('/hello')
localhost:5000/hello에 접속 시 'Hello, Pybo!' 출력
@bp.route('/')
localhost:5000에 접속 시 'Pybo index' 출력
'Backend > Server' 카테고리의 다른 글
[Flask] 데이터 처리하기 (DB) (2) (0) | 2023.07.31 |
---|---|
[Flask] 데이터 처리하기 (DB) (1) (0) | 2023.07.27 |
[Flask] 플라스크 애플리케이션 팩토리 (0) | 2023.07.26 |
[Flask] 플라스크 서버 실행하기 (0) | 2023.07.26 |
[Flask] 개발환경 준비 (1) | 2023.07.19 |