Flask 의 Blueprint 가 뭘까?
flask 에서 blueprint 라는 것을 제공한다. 쉽게 풀어서 이야기하면, module 을 url 에 등록하기 쉽게 해주는 방법이다.
만약 당신이 url 에 특정 handler 를 mapping시키는데, 그 url mapping 하는 곳은 보통 application 에서 한 곳에 집중되어 있다. 이 부분을 각 module 같은 단위 요소로 나눠놨을 때 이 녀석들을 손쉽게 중앙의 url dispatcher 에 등록시킬 수 있도록 해놓은 녀석이 blueprint 라고 생각하면 될 듯 하다.(정확한 사항은 ref. 1을 확인하자.)
당연히 application 을 여러개 만들어도 된다. 이 blueprint 는 그보다 상위 layer 에서 비슷한 기능을 제공하는 것이다. 이건 성능과 취향차이라고 봐야 할 듯 하다. 이 부분에 대한 이야기도 ref. 1 에 간략하게 있으니 확인하자.
Blueprint 사용 예제
파일 구조가 아래와 같이 해놓고,dbtest + | | /mymodule + | | | + __init__.py | | | + publish.py | + dbtest.py
#-*- coding: utf-8 -*- # dbtest.py from flask import Flask from mymodule import public app = Flask(__name__) app.register_blueprint(public.blueprint, url_prefix='/pages') @app.route('/') def hello_world(): return 'Hello World!' app.debug = True if __name__ == '__main__': app.run()
#-*- coding: utf-8 -*-
# public.py
__author__ = 'namhadmin'
from flask import Blueprint, render_template
blueprint = Blueprint('public', __name__)
@blueprint.route('/')
def home():
#return render_template('public/home.html')
return "blueprint test"
동작
위와 같이 code 가 되어 있다면, "http://127.0.0.1:5000/pages/" 로 접속하면 "blueprint test" 가 보일 것이다.url_prefix 설정을 해주지 않으면 '/' 가 겹치게 된다.(hello_world, home)
댓글 없음:
댓글 쓰기