- Published on
Django의 MVT 패턴 vs 전통적인 MVC 패턴
- Authors

- Name
- Hyo814
Django의 MVT 패턴 vs 전통적인 MVC 패턴
https://cupofcode.blog/intro-to-django/
- user request
- User Makes request by hitting the Url
- url resolving
- The Url is resolved which maps to a view
- view logic
- view contain all the custom logic and connect to templates and models
- model
- model contains the data as it is connected to database with orm. it provide required data to views to be sent to template
- template
- context data is passed from view to html template to be displayed
1. MVT와 MVC 패턴 개요 및 차이
MVT(Model-View-Template)와 MVC(Model-View-Controller)는 웹 프레임워크에서 애플리케이션 아키텍처를 설계할 때 자주 쓰는 패턴입니다. Django는 MVT 패턴을 따르지만, 사실상 MVC의 변형 구조입니다. 가장 큰 차이는 Django의 "View"가 비즈니스 로직을 처리하고, HTML을 렌더링하는 템플릿 시스템이 MVC의 View 역할을 대신한다는 점입니다.
2. Django MVT 각 구성 요소의 역할 (MVC와의 매핑 포함)
- Model: 데이터베이스 테이블과 1:1로 매핑되는 클래스. DB 읽기/쓰기 로직을 담당합니다.
- View: 클라이언트 요청을 받아 로직을 실행하고 템플릿에 데이터를 넘겨주는 중간 처리자입니다. (MVC의 Controller 역할)
- Template: 사용자에게 보일 HTML을 담당하며, context 데이터로 렌더링됩니다. (MVC의 View 역할)
3. MVT vs MVC 구조 다이어그램
구조를 비교하면 다음과 같습니다.
MVC:
- Model ↔ Controller ↔ View
MVT:
- Model ↔ View ↔ Template
Django는 Controller 없이 View가 이를 대신하며, Template이 렌더링을 전담합니다.
4. Django 백엔드의 요청-응답 처리 흐름
- 사용자의 HTTP 요청 수신
- URLconf에 따라 해당 View 함수 호출
- View는 Model과 상호작용하여 데이터 처리
- 처리된 데이터를 Template에 전달하여 HTML 생성
- 생성된 HTML을 클라이언트에게 응답으로 반환
5. Django 렌더링 과정에서의 성능 포인트
- 쿼리 최적화: ORM에서
select_related,prefetch_related활용 - 템플릿 캐싱: 반복 렌더링되는 부분은 fragment cache 적용
- DB 접근 최소화: 불필요한 DB 호출 제거, context data 정리
- Static 파일 최적화: CDN, 압축, 미리 컴파일된 자산 사용
6. MVT 패턴이 프로젝트 구조에 미치는 영향
- 역할이 명확히 나뉘어 협업 효율이 올라갑니다.
- View에서 로직, Template에서 UI, Model에서 데이터를 분리하므로 유지보수가 쉬워집니다.
- 구조가 일관되어 코드베이스가 커져도 복잡도가 낮습니다.
7. MVT 패턴이 프로젝트 유지보수에 주는 도움
- 로직과 표현이 분리되어 있어 UI를 바꿀 때 백엔드를 손대지 않아도 됩니다.
- 구성 요소별로 따로 테스트하기 쉽습니다.
- 재사용성 높은 컴포넌트 설계에 유리합니다.
8. MVT 패턴이 프로젝트 확장성에 미치는 영향
- 기능을 추가해도 기존 구조를 크게 해치지 않고 모듈을 확장할 수 있습니다.
- View, Template 파일이 많아져도 기능별 디렉토리로 나누기 쉽습니다.
- 대규모 트래픽을 고려해 로직을 분산하거나 따로 배포하기에도 편합니다.
9. MVC 패턴과 MVT 패턴의 비교
| 항목 | MVC | MVT (Django) |
|---|---|---|
| 모델 | Model | Model |
| 컨트롤러 | Controller | View |
| 뷰 | View | Template |
Django의 View는 Controller 역할을 하고, 사용자에게 보이는 화면은 Template이 담당합니다.
10. 템플릿 중심 개발의 장점과 한계
장점:
- 프론트엔드 개발자가 Template만 만져도 UI를 바꿀 수 있습니다.
- 빠른 프로토타이핑과 서버사이드 렌더링에 유리합니다.
한계:
- 복잡한 동적 UI를 다루기 어렵습니다(JS 프레임워크가 필요합니다).
- 로직과 표현이 템플릿에 얽히면 가독성이 떨어지기 쉽습니다.
11. Django에서의 View는 MVC의 Controller인가?
맞습니다. Django의 View는 비즈니스 로직 처리, 요청 분기, 데이터 가공을 맡으며 MVC의 Controller와 같은 역할을 합니다. Template은 MVC에서 View가 맡던 역할, 즉 사용자에게 보이는 화면을 담당합니다.