반응형
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)를 따로 개발할 수 있어 협업에도 매우 유리합니다.
반응형
'Linuxpia > 웹 프로그램' 카테고리의 다른 글
[Django 연습] Poem App 설치 (2) | 2025.05.03 |
---|---|
GitHub에서 clone한 Django 프로젝트 실행을 위한 기본 세팅 (6) | 2025.05.02 |
[Django] 웹 프레임워크 URL 분리 (2) | 2025.05.01 |
리눅스 가상환경에서 Django와 OpenAI를 강제로 설치하는 방법 (2) | 2025.04.28 |
[Django 프로젝트] 시 감상과 감상문 남기기 (6) | 2025.04.28 |