블루프린트 사용목적: 라우팅 함수를 체계적으로 관리하기 위함.
def create_app(): app = Flask(__name__) @app.route('/') def hello_pybo(): return 'Hello, Pybo!' return app |
위와 같은 방식으로 코드를 짜면 새로운 URL매핑이 필요할 때마다(웹사이트에 새로운 페이지를 추가할 때마다) 라우팅함수를 create_app함수에 계속 해야함. 즉, create_app함수가 크고 복잡해져서 가독성이 떨어짐.
이 때 블루 프린트를 사용해, create_app함수의 가독성을 좋게 만드는 것임.
bp = Blueprint('main', __name__, url_prefix='/') @bp.route('/') def hello_pybo(): return 'Hello, Pybo!' |
'main'은 블루프린트의 별칭으로, url_for함수에서 사용된다.
__name__은 모듈명(코드가 쓰여진 파일명 ex.main_views)가 인수로 전달되는데, 몰라도 지장 없을 것 같다. 항상 __name__으로 고정해서 쓴다.
url_prefix='/'는, 라우팅함수의 주소(애너테이션 URL) 앞에 기본적으로 붙일 접두어 URL을 의미한다.
블루프린트를 담은 파일을 만든다고 끝이 아니다.
사용을 원하는 곳에 "등록"을 해야한다.
def create_app(): app = Flask(__name__) from .views import main_views app.register_blueprint(main_views.bp) return app |
위 bp를 정의한 코드가 있는 파일이 views디렉토리의 main_views파일이다.(현재 코드의 파일 한단계 상위 레벨에 views가 있음)
"main_views파일에서 bp를 본 파일에 등록한다"라는 뜻.
'웹개발 > [점프 투 플라스크]' 카테고리의 다른 글
[점프 투 플라스크] 부트스트랩으로 화면 꾸미기 & 템플릿 상속 with 표준HTML (0) | 2024.04.10 |
---|---|
[점프 투 플라스크] 답변 등록 기능 만들기 (0) | 2024.04.10 |
[점프 투 플라스크] 질문 목록, 질문 상세 기능 만들기 및 블루프린트로 기능 분리하기 & url_for (0) | 2024.04.10 |
[점프 투 플라스크] 모델(ORM 클래스)로 데이터 처리하기. (0) | 2024.04.09 |
[점프 투 플라스크] 파이썬 가상환경, 배치파일 (0) | 2024.03.23 |