Back-end

[Flask] MVC패턴을 위한 BluePrint, 파이썬 파일끼리 import하기

파리외 개발자 2022. 7. 4. 18:03

MVC 패턴 - Model, View, Control

  • MVC : 소프트웨어 개발 방법 중 하나
    • Model : 데이터베이스 (백엔드 서버, 데이터를 다루는 부분)
    • View : 인터페이스 (프론트엔드, 사용자의 눈에 보이는 웹페이지 등)
    • Control : M과 V 사이에서 제어 담당 (RestAPI등)

  • MVC의 목적
    • MVC에 따라 코드를 분류하여 관리를 쉽게 하는 것 (위의 폴더 구조처럼 모델에 맞게 분류함)
    • 자주 변경할 수 있는 View부분등을 따로 빼서 유지보수를 쉽게 하겠다는 것이 목적
  • MVC의 단점
    • 기본 취지와 어긋나게 유지보수 시 MVC 세 부분을 모두 조금씩 건드려야 하는 상황이 나옴
    • 하나의 기능이 여러군데에 흩어져 있을 때, 코드의 가시성이 떨어질 수가 있음

 

import 

bluePrint라는 같은 폴더내에 있는 BPtest와 test1파일을 서로 import한다.

test1파일의 func1함수는 test111을 프린트하며 

이 기능을 Bptest에서 사용하기 위해서 test1을 import해주고

test1.func1을 통해 해당 함수를 불러온다.

test111이 출력되었다.

이번엔 하위 폴더인 sub_blueprint내에 test2파일을 새로 생성한다.

from으로 하위폴더에 접근해서 test2를 import하고 똑같이 사용해본다.

같은 폴더와 다른 폴더에 있는 두 파일을 import해서 사용해봤다.

BluePrint

MVC패턴 뿐 아니라 컴포넌트 단위로 개발을 할 때등

하나의 파일에 모든 코딩을 집어넣진 않는다.

이를 위해 여러 파일과 폴더를 import해서 연결해서 사용해줘야 하며

flask코드를 여러 파일에 작성할 수 있게 지원해주는 것이 blueprint기능이다.

blueprint기능을 사용해 main서버에 해당 기능을 import할 파일인 sub_bp파일을 생성하고

blueprint객체를 bp란 이름으로 생성해주고

bp라우팅 경로를 /bbb로 해준다.

main_bp파일에는 sub_bp를 import하여

register_blueprint를 사용해 import받은 sub_bp의 bp를 등록하며

경로를 /ccc로 지정해준다.

main서버를 실행하여 /ccc를 통해 sub_bp에 접근하고

여기서 bp의 라우팅경로인 /bbb에 접근하면 blog함수가 실행된다.