반응형

0. 들어가기

-. 코드를 짤 때, 한 덩어리 (예를들어 main.py)에 모두 몰아넣는 것이 아니라, 기능별로 분리하여 작성하는 것을 모듈화(modularization)라 하고, 디자인 패턴 등에서 심도있게 다룬다.

-. 난 그냥 한번에 관리하기 힘드니까 잘라서 만들려고 한다. (예를들어 커뮤니티 게시판과 주식분석 게시판을 분리한다.)

-. Flask에서는 찾아보니 Blueprint (청사진?)이란 이름으로 제공한다. 

-. 점프 투 플라스크ReadTheDocs를 보면서 따라한다.

※ Blueprint 생성 전 설계

-. 처음 할라니 어디부터 해야할지 모르겠다. 우선은 메인페이지/게시판/주식차트페이지를 구분해보겠다.

 

1) 메인(/main): 로그인 및 현재 사이트 요약

2) 게시판(/board): 유저들의 커뮤니티 글 게시

3) 주식(/stock): 각 주식의 현재 시황 및 지표들 게시

1. Blueprint 사용

-. 어렵진 않은 것 같다. webserver 하위에 폴더를 만들고 ( ex) .views ) 그 아래에 각 분기에 해당하는 route 들을 작성하면 된다.

#/main route에 대한 Blueprint 예시

#=========================================
from flask import Blueprint
from flask import Flask, render_template, redirect, url_for

bp = Blueprint('main', __name__, url_prefix='/main')


@bp.route('/')
def main():
    return 'This is main page'
#=========================================

#__init__.py 수정
from flask import Flask, render_template, redirect, url_for
from jinja2 import Template
from .views import main_views, stock_views, board_views

app = Flask(__name__)

app.register_blueprint(main_views.bp)
app.register_blueprint(stock_views.bp)
app.register_blueprint(board_views.bp)

#root ("/")로 들어오면 "/main" 으로 리다이렉팅
@app.route("/")
def hello():
    return redirect(url_for("main.main"))

-. 매우 고맙게도, template 폴더는 따로 지정해줄 필요 없이, __init__.py에서 불러오는 경로(/templates)를 공유한다.

-. 출력결과는 생략.

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기