from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
파이썬에서 플라스크를 이용하여 프로그램을 실행시키려면 다음과 같은 코드로 가능하다. 그러나 만약에 코드의 내용이 방대해지고 복잡해지면 어떻게 될까? 수천줄 ~ 수만줄의 코드를 한 곳에 모아놓고 관리한다면, 많은 문제가 생긴다. 예를 들면, 가독성 / 유지보수 용이성 / 확장성 / 테스트 편이성 등이 있다.
그렇다면 모듈화를 어떻게 해야할까? 직관적으로 파일을 쪼개는 방법이 존재한다.
module.py라는 함수에 예를들어 def login이라는 login 메소드를 작성했다면, 데코레이터(@)없이 app.route를 이용하여 실행할 수 있다.
#app.py
from module import login
app.route('/login', methods = ['GET', 'POST'])(login)
하지만 이 방식은 몇가지 편리적인 부분에서 문제가 있다. 이러한 부분을 해결하기 위해 파이썬의 플라스크는 블루프린트를 제공한다.
module.py에서는 Blueprint를 import해주고, blueprint를 생성해준다. 이렇게 블루프린트를 사용하면 각 모듈에서 직접 데코레이터를 달아서 라우팅을 해줄 수 있다.
app.py에서는 이렇게 만든 블루프린트를 import해오고 app객체에서 실행만 시켜주면 된다.
#module.py
from flask import Blueprint
module_blueprint = Blueprint("module", __name__, url_prefix='/module')
@module_blueprint.route('login', methods = ['GET', 'POST'])
def login():
#login 메소드 내용
#app.py
from module import module_blueprint
app.module_blueprint(module_blueprint)
이러한 방식과 세부적인 내용들이나 코드는 모듈화하는 방식과 구조에 따라서 달라질 수 있다. 그러나 이 포스트에서는 기본적인 모듈화 방법에 대해서만 다루었다.