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!’가 출력된다.
'백엔드' 카테고리의 다른 글
플라스크 ORM 라이브러리 사용하기 (0) | 2021.08.06 |
---|---|
ORM(object relational mapping) (0) | 2021.08.06 |
플라스크 어플리케이션 만들기_초보 (0) | 2021.08.01 |
플라스크 프로젝트 생성하기 (0) | 2021.07.30 |
플라스크 개발 환경 준비하기 (0) | 2021.07.30 |