[컴][파이썬] flask 에서 Blueprint 사용하기

플라스크 블루 프린트



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)


Reference

  1. Modular Applications with Blueprints — Flask Documentation (0.10)






댓글 없음:

댓글 쓰기