from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello_pybo():
return 'Hello, Pybo!'
return app
hello_pybo : / URL과 매핑되는 함수
@app.route('/')가 이런 url 매핑을 만들어줌
route 장식자 : 플라스크 서버임, '/'url 요청이 들어왔을 때 어떤 함수를 호출할 것인지 조정
라우팅 함수: @app.route와 같은 애너테이션으로 URL을 매핑하는 함수
블루프린트 : 플라스크에서 URL과 함수의 매핑 관리하기 위해 사용하는 도구(클래스) -> 라우팅 함수 체계적으로 관리 가능
at. [파일명: projects/myproject/pybo/views/main_views.py]
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/') # bp 객체 생성
@bp.route('/')
def hello_pybo():
return 'Hello, Pybo!'
# main : 블루프린트의 "별칭" -> 이후 url_for 함수에서 사용
# __name__ : 해당 모듈의 이름을 가지고 있는 변수(=지금 py 파일의 이름을 가지고 있는 변수)
직접 실행된 파일 __name__ == "__main__"
임포트 돼서 모듈로 사용된 .py 파일 __name__ == "모듈이름"
출처: https://blockdmask.tistory.com/545 [개발자 지망생]
# url_prefix : 라우팅 함수의 애너테이션 URL 앞에 기본으로 붙일 접두어 URL을 의미한다
ex) main_views.py 파일의 URL 프리픽스에 url_prefix='/' 대신 url_prefix='/main'이라고 입력했다면 hello_pybo 함수를 호출하는 URL은 localhost:5000/이 아니라 localhost:5000/main/이 됨
at. [파일명: projects/myproject/pybo/__init__.py]
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
@bp.route('/hello')
def hello_pybo():
return 'Hello, Pybo!'
@bp.route('/')
def index():
return 'Pybo index'
=> 라우팅 함수가 추가되더라도 main_views.py 파일에 함수를 추가하면 되기 때문에 create_app 함수(이건__init__.py안에 있음)가 뚱뚱해질 일을 걱정할 필요 X