이전 포스트에서 플라스크를 이용해서 웹을 구성했다.
Hi 밖에 나오지 않지만 일단 구축에 성공했다고 볼 수 있다.
2021.08.17 - [python/웹] - [파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1]
만약 서비스가 복잡해지고, 신경써야 할 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에서 불러왔다고 표시된다.
'python > 웹' 카테고리의 다른 글
Flask - Html 파일/이미지 전송 (0) | 2021.11.18 |
---|---|
[파이썬 웹] flask를 이용한 웹페이지 (0) | 2021.10.22 |
Flask CORS (0) | 2021.09.27 |
[파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [2] (0) | 2021.08.17 |
[파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1] (0) | 2021.08.17 |