본문 바로가기
What is □?

16_MTV/MVT 패턴이란 무엇인가?

by 전봇대파괴자 2021. 5. 19.

 

django에서 사용되는 설계 구조이다.

이름은 조금 다르지만 위에서 나온 MVC와 거의 동일하다.

 

위의 그림에서처럼 Model, Template, View가 각각 Model, View, Controller에 대응된다. 그러나 아래와 같이 MTV만이 가지는 특징도 존재한다.

 

  1. Model에서 파이썬 코드를 통해 DB를 조작할 수 있다. 이는 ORM(Object Relational Mapping)이라는 것 덕분인데 객체와 관계형 DB를 연결해주며, 파이썬 코드를 SQL 쿼리로 자동 변환해준다. 단 복잡한 쿼리 같은 경우에는 적합하지 않다.
  2. django는 자체 django template 문법을 지원하며, 이를 통해 html 파일 내에서 context로 받은 데이터를 활용할 수 있다.
  3. View는 Controller 역할을 하지만 항상 template을 렌더링하진 않으며 백엔드에서 데이터만 주고받기도 한다.
  4. MVC와 달리 URLConf(URL 설계)라는 단계가 존재하는데 URL을 View와 연결하는 과정이다. django 프로젝트 내 urls.py에서 진행되며 path 함수를 사용한다.

 

이러한 특징을 반영하여 진행되는 요청-응답 과정은 다음과 같다.

 

  1. 사용자가 특정 URL로 요청을 보낸다.(ex. 채용 사이트 주소를 치고 엔터를 친다)
  2. URLConf를 통해 해당 URL과 매핑된 View를 호출한다.
  3. View는 요청에 따라 적절한 로직을 수행하며, 그 과정에서 Model에게 CRUD를 지시한다.
  4. Model은 DB와 소통하며 CRUD를 수행한다.
  5. View는 지정된 template을 렌더링하고, 최종 결과를 응답으로 보낸다.