Maxima's Lab

[Flask] Flask 모듈화 방법 (Blueprint) & current_app 본문

Web Programming

[Flask] Flask 모듈화 방법 (Blueprint) & current_app

Minima 2023. 11. 13. 23:11
728x90
SMALL

안녕하세요, 오늘은 Flask 애플리케이션에서 Blueprint 패키지를 활용하여 애플리케이션의 구성요소들 모듈화하고, current_app을 사용해서 config 구성요소에 접근하는 방법에 대해서 알아보겠습니다.
 

/myapplication
	
    /main_1
    	__init__.py
        views.py
        
    /main_2
    	__init__.py
        views.py
        
    __init__.py
    
app.py

 
위의 구조에서  /myapplication/main_1/.__init__.py 파일에 대해서 알아보겠습니다.
 

# /myapplication/main_1/.__init__.py
from flask import Blueprint

main_1 = Blueprint('main_1', __name__, url_prefix='/main_1')

from . import views

 
이어서, /myapplication/main_1/views.py 파일에 대해서 알아보겠습니다.
 

# /myapplication/main_1/views.py
from . import main_1
from flask import request, jsonify

@main.route('/', methods=['POST', 'GET'])
def index():
    
    return "main_1/views.py"

 
main_2에서도 유사하게 코드를 작성해주시면 됩니다.
 
추가적으로, app.py 파일에 대해서 알아보겠습니다.
 

# app.py
from myapplication import create_app

app = create_app()

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

 
위의 코드를 활용하여 실행하게 되면 Flask Server에 대해 모듈화를 할 수 있게 됩니다.
 
모듈화된 구조에서 create_app를 활용하여, blueprint에서 app.config에 저장된 변수를 활용하는 방법에 대해서 알아보겠습니다. 다음은 myapplication/__init__.py 파일 내 코드입니다.
 

# myapplication/__init__.py
from flask import Flask
from config import Config

def create_app(config_class=Config):
    
    app = Flask(__name__)
    app.config.from_object(config_class)
    
    from myapplication.main_1.views import main_1
    from myapplication.main_2.views import main_2
    
    app.register_blueprint(main_1)
    app.register_blueprint(main_2)
    
    app.config['myList'] = []
    
    return app

 
위의 코드는 기존 코드에서, app.config['myList'] = []을 추가하였습니다. 해당 List를 blueprint에서 사용하기 위해서는 다음과 같이 코드를 구성하게 됩니다.
 

# /myapplication/main_1/views.py
from . import main_1
from flask import request, jsonify
from flask import current_app

@main_1.route('/', methods=['POST', 'GET'])
def index():
    current_app.config['myList'].append('element_1')
    print(current_app.config['myList'])
    return "main_1/views.py"

 
from flask import current_app을 활용하여, blueprint에서 config 내 'myList' 요소에 대해 접근할 수 있게 되며, 위의 코드 기준으로 ['element_1']이 출력되게 됩니다.
 
지금까지, Blueprint 패키지를 활용하여 Flask 애플리케이션의 구성요소들을 모듈화하고 current_app을 사용하여 config 요소들에 접근하는 방법에 대해서 알아보았습니다.

728x90
LIST
Comments