MTV란?

웹 프로그램 개발 시 일반적으로 언급되는 패턴은 MVC(model - view - controller) 패턴이다.

M(model) : 데이터
V(view) : 사용자 인터페이스
C(controller) : 데이터를 처리하는 로직

이를 쟝고에서는 MTV(model-template-view) 패턴으로 바꿔서 정의한다.

M(model) : 모델 클래스, 데이터 객체 정의와 그 데이터 (models.py)
T(template) : 사용자에게 보여지는 인터페이스 화면 (templates/*.html)
V(view) : 데이터를 가져오고 적절하게 가공하여 그 결과를 템플릿에 전달하는 역할 (views.py)

MVC의 단점

Controller가 로직의 모든 부분을 담당하기 때문에, 대규모 프로젝트에서 Controller에게 업무의 과부하가 걸린다.
결국 효율적인 유지보수를 위해 생겨난 MVC패턴이 대규모 프로젝트에선 역효과를 일으킨다.

이를 해결하기 위해 MVP, MVVM 디자인패턴이 생겼다.

MTV를 통한 HTTP와 데이터 흐름

  • 1 . 클라이언트가 특정 주소로 요청을 보낸다. (GET method)
  • 2 . 쟝고 웹앱에 요청이 들어온다.
  • 3 . url conf 모듈을 이용하여 요청의 url을 확인한다.
  • 4 . 해당 url에 매핑된 뷰를 결정한다.(urls.py)
  • 5 . 뷰는 로직을 실행한다. 필요한 경우 모델을 통해 데이터를 처리한다. (view.py)
  • 6 . 템플릿을 기반으로 최종 html 코드를 생성한다. (template/~.html)
  • 7 . 생성된 html 코드를 클라이언트로 보낸다.
  • 8 . 클라이언트가 받은 html 코드를 렌더링한다. (render)

댓글 쓰기