Model: 데이터를 처리하며 테이터베이스와 상호작용하는 인터페이스 역할
View: 브라우저에서 실제 사용자에게 표시되는 로직을 처리하여 UI로 나타냄
Controller: View에서 흐름을 처리하거나 Model의 데이터 업데이트를 처리하는 로직을 제공
Module: 을 통해 데이터를 처리하고 Vidw를 통해서 사용자의 데이터를 얻으며 Model을 통해 View를 변경하거나 데이터를 업데이트 하여 로직을 구현하는 것.
Django에서 MVC 패턴을 조금 변형해서 부르는 패턴이다. MVC와 MVT는 사실상 용어만 다를 뿐 거의 동일하며 MVC의 어떤 패턴의 문제점을 개선하기 위해 MVT 패턴을 만든것이다. Controller의 역할을 Django에서 종종 처리한다.
MVC 는 실제 사용자와 Controller가 상호작용하고 MVT는 프레임워크임 Django와 상호작용한다. 또한, MVT에서 브라우저와 상호 작용하는 Controller의 역할을 MVT에서는 View가 일부 상호작용하기도 한다.
MVT 패턴은 View와 url만 지정해 준다면 그 이후는 Django라는 프레임워크가 해결해준다는 장점이 있다. MVC에서 Controller의 역할을 Django라는 프레임워크가 대신 해준다는 점이고 그렇기 때문에 요즘에는 MVT 패턴을 많이 사용하는 추세이다.
하지만 그렇다고 MVC 패턴이 좋지 않고 필요 없다는 것은 아니다. Controller의 기능을 모두 제어해야 한다면 MVC 패턴을 사용해야 할 것이다.
- 클라이언트로부터 Request를 받고 URL conf를 이용해서 URL을 분석한다.
- URL에 대한 처리를 담당할 View를 결정한다.
- 해당 View 로직을 실행하고 모델을 통해서 데이터 베이스에서 결과를 얻고 그 결과를 반환한다.
- View는 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에게 전송할 JSON 파일을 생성하고 클라이언트에게 전송한다.