Linuxpia/웹 프로그램

Django에서 MTV란?

easyfly 2025. 4. 27. 22:53
반응형

MTV 아키텍처란? (Django에서의 구조 이해)


MTV는 Django 웹 프레임워크에서 사용하는 아키텍처 패턴입니다. 이 구조는 전통적인 MVC(Model-View-Controller) 패턴과 유사하지만, Django에서의 용어에 맞추어 Model - Template - View로 구성됩니다.


1. MTV의 구성 요소

 

구성요소 설명   역할
Model (모델) 데이터 구조와 데이터베이스 작업 담당 DB 테이블과 연결되어 데이터 저장, 조회, 수정, 삭제를 처리
Template (템플릿) 사용자에게 보여줄 HTML 화면 HTML, CSS, JavaScript 등을 포함한 웹 페이지 출력 형식
View (뷰) 사용자의 요청을 처리하고 응답 생성 요청을 받고, 필요한 데이터 처리 후, 템플릿에 전달하여 응답 생성

2. 각 구성요소의 역할 예시

Django 웹 애플리케이션에서 "사용자 정보 보기" 기능을 만들 때:

1) Model (models.py)

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
  • User 모델은 데이터베이스 테이블 하나에 대응합니다.
  • 이름(name), 이메일(email)을 필드로 가짐

2) View (views.py)

from django.shortcuts import render
from .models import User

def user_list(request):
    users = User.objects.all()
    return render(request, 'users/list.html', {'users': users})
  • 사용자 목록을 데이터베이스에서 가져오고, 템플릿에 전달함
  • render 함수를 통해 list.html 파일로 데이터를 넘김

3) Template (templates/users/list.html)

<h1>사용자 목록</h1>
<ul>
  {% for user in users %}
    <li>{{ user.name }} ({{ user.email }})</li>
  {% endfor %}
</ul>
  • View에서 넘긴 users 데이터를 반복문으로 출력
  • HTML 코드로 구성된 사용자 인터페이스

3. MTV와 MVC 비교

 

개념  Django 용어 (MTV)  전통적 용어 (MVC)
데이터 처리 Model Model
화면 출력 Template View
요청/응답 처리 View Controller

즉, Django에서는 Controller 역할을 View가 맡고, HTML 뷰는 Template로 분리됩니다.


4. MTV 아키텍처의 장점

  • 역할 분리: 데이터, 로직, 화면을 분리하여 유지보수와 확장이 쉬움
  • 재사용성: Model, View, Template 각각 독립적으로 재사용 가능
  • 내장 기능 연계: Django는 MTV 구조를 기준으로 강력한 기능을 제공합니다 (예: Admin, Form 처리, URL routing 등)

5. 요청 흐름 요약

[사용자 요청] → URLConf → View → Model → Template → [사용자 응답]
  1. 사용자가 웹 주소를 입력하거나 버튼 클릭
  2. Django의 URLConf가 요청을 View 함수로 전달
  3. View는 필요한 Model 데이터를 불러옴
  4. View는 데이터를 Template에 넘김
  5. Template은 사용자에게 보여줄 HTML을 생성
  6. 최종 결과가 사용자 브라우저에 표시됨

마무리 요약

  • MTV는 Django의 핵심 구조로, MVC를 Django 방식으로 해석한 형태입니다.
  • Model: 데이터 저장과 처리
  • Template: 사용자에게 보일 화면
  • View: 로직 처리 및 데이터 전달

MTV 구조를 잘 이해하면 Django 웹 개발의 기초를 탄탄히 할 수 있습니다. 

반응형