python/웹

[파이썬 서버] Flask를 잘 써보자 - Blueprint

끼발자 2021. 8. 19. 14:46
반응형

 이전 포스트에서 플라스크를 이용해서 웹을 구성했다.

Hi 밖에 나오지 않지만 일단 구축에 성공했다고 볼 수 있다.

2021.08.17 - [python/웹] - [파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1]

 

[파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1]

파이썬을 이용하여 웹 서버를 만들어보자 https://flask.palletsprojects.com/en/2.0.x/ Welcome to Flask — Flask Documentation (2.0.x) flask.palletsprojects.com 사용할 패키지는 Flask를 사용할 것이다. 파..

kkiho.tistory.com

 

만약 서비스가 복잡해지고, 신경써야 할 url이 많아진다면 플라스크를 실행시키는 main 함수가 끝도없이 길어진다.

개발할 때도, 기능별로 함수나 클래스로 구현하듯, Flask도 동일한 기능을 지원해준다.

 

Blueprint

main.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def root():
    return f'HI This Url called by {__name__}'

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True)

 

메인 함수를 실행 시키고, 루트 url로 접속하면

다음과 같이 메인에서 호출된 것을 볼 수 있다.

 

이제 fun1.py , fun2.py 파이썬 파일을 생성해보자.

새로 생성된 파일에 새로 넣으려고 하는 url을 만들어 주자.

fun1.py

from flask import Blueprint

app_fun1 = Blueprint('app_fun1',__name__)

@app_fun1.route('/app_fun1')
def appfun1():
    return f'HI This Url called by {__name__}'

 

Bluprint를 임포트하고, 메인함수와 다르게 Blueprint 객체를 만들어주고, 'app_fun1'이라는 이름을 붙여주자.

메인함수에선 데코레이터로 @app.route('url')로 만들어줬다면, 

Blueprint 파일에서는 Blueprint객체로 route를 해준다.

방식은 동일하다.

비교용으로 fun2.py파일을 만들어주고

변수명만 app_fun1 => app_fun2로 바꿔주자. 

 

두개의 Blueprint를 만들었다면, 메인함수에 이 두개를 추가해주면 끝이다.

수정된 main.py

from flask import Flask
from fun1 import app_fun1
from fun2 import app_fun2
app = Flask(__name__)

@app.route('/')
def root():
    return f'HI This Url called by {__name__}'

app.register_blueprint(app_fun1)
app.register_blueprint(app_fun2)
if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True)

Flask 객체에 blueprint를 등록시켜주기 위해서 앞서 만들어놓은 파일들을 import하고, 

Blueprint 객체를 등록시키면 된다.

 

app_fun1은 fun1에서 불러왔고, app_fun2는 fun2에서 불러왔다고 표시된다.

 

반응형