졍
지영이 블로그
졍
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • 네트워크 (12)
    • 시스템설계 (6)
    • AWS (7)
    • Elasticsearch (3)
    • Python (5)
    • 자료구조, 알고리즘 (9)
    • 코딩테스트 (29)
    • NCP (8)
    • 운영체제 (7)
    • 개인 프로젝트 (8)
    • Github (1)
    • 여행 (0)
      • 2024동유럽 (0)
    • 대학원 (0)
      • 논문정리 (0)

최근 글

최근 댓글

hELLO · Designed By 정상우.
졍

지영이 블로그

[Flask] MVC pattern
Python

[Flask] MVC pattern

2023. 5. 6. 23:00

MVC 패턴이란?

Model-View-Controller 패턴으로 소프트웨어 코드를 작성하는 것이다.

MVC 패턴을 사용하여 코드를 작성하면 유지보수가 쉬워진다는 주장이있는데, 꼭 그렇지만은 않다고 한다.

왜냐하면 하나의 기능에 대해 M V C 각각이 파일로 쪼개져있어서 코드 이해와 디버깅이 어려울 수 있다.

MVC (출처: 위키백과)

Model

- DB와 소통하며 데이터를 가지고 오거나 데이터를 가지고 있다.

- 컨트롤러에게 데이터를 전달한다.

- Database 영역

 

View

- 유저가 보는 화면을 나타낸다

- 컨트롤러에게 데이터를 전달받아 유저에게 보여주거나, 유저 액션을 전달한다.

 

Controller

- Model과 View 사이를 중간에서 제어하는 역할을 한다.

- 뷰로부터 사용자 액션과 인풋 값아 모델에게 전달하고, 모델에게 데이터를 받아 가공하여 뷰에게 전달한다.

- server 영역


Python Django는 기본적으로 MVC 패턴에 따라 만들도록 기본 템플릿이 주어진다.

반면 Flask는 무의 상태에서 하나하나 내가 설계하고 만들어가야하기 때문에 애플리케이션 설계단계에서 어떻게 코드를 구성할 것인지 고민해야한다.

 

내가 만든 앱에서 MVC 패턴은 다음과 같이 정의할 수 있다.

 

Model은 db.py로 DB와 직접 접근을 하면서 데이터를 가져오거나 수정한다.

View는 templates 폴더 내부의 파일들로, html을 이용해서 원하는 뷰를 생성한다. 나는 Jinja 템플릿을 활용하여 view를 생성하였다.

Controller는 크게 두가지 비즈니스 로직으로 만들었으며, 로그인을 구현한 auth.py와 블로그 포스팅 기능을 구현한 blog.py가 있다.

 

'Python' 카테고리의 다른 글

[Python Framework] 파이썬 프레임워크와 웹서버 연동 - CGI, WSGI, ASGI 차이  (0) 2023.06.16
[Python] Mutable, Immutable 차이  (1) 2023.06.07
[Django] 테스트 코드 작성해보기  (0) 2023.06.03
[Python] Set과 List의 시간 복잡도 차이  (0) 2023.05.04
    졍
    졍

    티스토리툴바