본문 바로가기
Code/Trouble Shooting

[Flask] Flask 생성, 실행 정리하기

by hyelog 2022. 6. 21.

Flask 어플리케이션 생성

# __init__.py

from flask import Flask

app = Flask(__name__) # Flask(__name__) 은 해당 어플리케이션 폴더의 이름

__name__ : 실행중인 위치의 이름을 가져옴 [magic method]

 

Flask 실행

$ FLASK_APP=flask_app flask run

# 다음과 같이 설정해 두면, 끄기 전까지 flask run으로만 실행 가능!
$ export FLASK_APP='app이름'
$ flask run

 

BluePrint 사용하기

# user.py

from flask import Blueprint

bp = Blueprint('users', __name__, url_prefix='/user')

@bp.route('/')
def index():
    return 'User page'
  • 'user' : 블루프린트 이름
  • __name__ : 블루프린트의 import 이름
  • url_prefix='/user' : URL 접두어 설정 
# __init__.py

from flask import Flask
from flask_app.routes import user_bp

app = Flask(__name__)
app.register_blueprint(users.bp)

@app.route('/')
def index():
    return 'Hello World!'

 

Application Factory

global한 context에서 app 을 선언하고 사용했었다.

하지만 이 경우,

  • 여러 개의 어플리케이션을 동시에 사용할 때
  • app 이 선언되어 있는 파일의 일부분만 필요할 때

문제가 발생할 수가 있다.

이런 문제점들을 피하기 위해 사용되는 방법이 함수를 따로 생성하는 application factory 방법이다.

from flask import Flask

def create_app():

    app = Flask(__name__)
   
   # import
    from mini_flask_app.views.user_views import user_bp
    
    app.register_blueprint(user_bp, url_prefix='/user')

    return app
    

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

댓글