Linuxpia/웹 프로그램

Django 앱 구조로 알아보는 MTV 패턴

Linuxpia4U 2025. 5. 2. 06:35
반응형

Django 앱 구조로 알아보는 MTV 패턴

Django는 MTV 패턴을 따르는 웹 프레임워크입니다.


MTV는 Model-Template-View의 약자로, 각각의 역할을 명확하게 구분하여 웹 애플리케이션을 개발할 수 있도록 도와줍니다.

Django의 프로젝트와 앱 구조를 통해 MTV 패턴을 하나씩 알아보겠습니다.

1. Model (모델)

데이터를 관리하는 부분입니다.

  • Model은 데이터베이스 테이블과 1:1로 연결됩니다.
  • 예를 들어, 게시판 글, 사용자 정보, 상품 목록 같은 데이터를 정의합니다.
  • 보통 models.py 파일 안에 작성합니다.

예시

from django.db import models

class Question(models.Model):
    subject = models.CharField(max_length=200)
    content = models.TextField()
    create_date = models.DateTimeField()
  • 위 코드는 '질문'이라는 데이터를 관리하는 모델입니다.
  • 실제 데이터베이스에 Question이라는 테이블이 만들어집니다.

2. Template (템플릿)

사용자에게 보여주는 화면입니다.

  • HTML 코드로 웹페이지를 만듭니다.
  • 단순한 정적 HTML이 아니라, Django 템플릿 언어(DTL)를 사용해서 동적으로 데이터를 보여줄 수 있습니다.
  • 보통 templates 폴더 안에 HTML 파일을 넣습니다.

예시

<!-- templates/pybo/question_list.html -->
<h1>질문 목록</h1>
<ul>
  {% for question in question_list %}
    <li>{{ question.subject }}</li>
  {% endfor %}
</ul>
  • 서버에서 받은 데이터(question_list)를 반복해서 화면에 보여줍니다.

3. View (뷰)

요청을 처리하고, 응답을 만드는 부분입니다.

  • 사용자가 웹사이트에 접속하면 가장 먼저 View가 작동합니다.
  • View는 데이터를 가져오거나, 필요한 처리를 한 후, Template에 넘겨줍니다.
  • 보통 views.py 파일 안에 작성합니다.

예시

from django.shortcuts import render
from .models import Question

def index(request):
    question_list = Question.objects.all()
    return render(request, 'pybo/question_list.html', {'question_list': question_list})
  • 사용자의 요청을 받아서 Question 데이터를 조회합니다.
  • 조회한 데이터를 템플릿에 넘겨서 화면에 표시합니다.

정리

구성 요소  역할  위치
Model 데이터 관리 models.py
Template 화면 표시 templates 폴더
View 요청 처리, 응답 생성 views.py

 

Django의 MTV 패턴은 서로 역할을 분리해 주기 때문에 개발자 입장에서는 코드를 더 깔끔하고 체계적으로 관리할 수 있습니다.

또한, 화면 디자인(Template)과 데이터 관리(Model), 요청 처리(View)를 따로 개발할 수 있어 협업에도 매우 유리합니다.


 

반응형