Django의 MTV는 Model-Template-View의 약자로, 웹 애플리케이션을 설계할 때 사용하는 아키텍처 패턴이다. Django는 이 패턴을 기반으로 웹 애플리케이션의 구조를 구성하며, 이는 사용자 요청을 처리하고 응답하는 전체적인 흐름을 정의한다.
1. Model (모델)
- 역할: 데이터베이스와 상호작용하는 로직을 처리하는 역할. 데이터의 구조를 정의하고, 데이터베이스에 저장할 데이터를 다룸.
- 구현: Django의 모델은 Python 클래스를 사용해 정의되며, 데이터베이스 테이블과 매핑. 각 클래스는 데이터베이스의 필드로 변환될 속성들을 가지고 있음.
from django.db import models
class Database_Info(models.Model):
db_name = models.CharField(max_length=255)
date = models.CharField(max_length=10)
last_updated = models.CharField(max_length=19)
data_rows = models.CharField(max_length=10)
2. Template (템플릿)
- 역할: 사용자에게 보여질 웹 페이지를 구성하는 역할. HTML을 포함한 프런트엔드 관련 로직을 처리하며, 모델에서 가져온 데이터를 시각적으로 표현하는 곳.
- 구현: Django의 템플릿 시스템은 HTML 파일과 템플릿 태그(조건문, 반복문 등)를 사용해 동적 콘텐츠를 생성. 템플릿은 뷰(View)로부터 데이터를 받아 사용자에게 표시하는 웹 페이지를 렌더링.
<h1>List</h1>
<ul>
{% for content in info %}
<li>{{ content.title }} by {{ content.name }}</li>
{% endfor %}
</ul>
3. View (뷰)
- 역할: 사용자 요청을 처리하고, 필요한 데이터를 가져와 템플릿에 전달하며, 최종적으로 템플릿을 통해 응답을 반환하는 역할.. 뷰는 비즈니스 로직을 처리하며, 필요한 경우 모델에서 데이터를 가져오거나 수정.
구현: Django에서는 함수형 뷰 또는 클래스 기반 뷰를 사용할 수 있음. 요청을 처리하고, 모델로부터 데이터를 받아 템플릿에 전달한 후 렌더링된 HTML을 반환.
class IPO(View):
template_name = './html/stock/ipo.html'
def get(self, request, *args, **kwargs):
return render(request, self.template_name, {'info': info})
MTV 흐름의 대해 다시 설명해보면, 사용자가 웹 요청을 보내면, Django는 해당 요청을 처리할 View를 호출, View는 필요한 데이터를 Model에서 가져와 비즈니스 로직을 처리하고, 이를 Template에 전달한다. 그리고 Template은 받은 데이터를 바탕으로 동적인 HTML을 생성하고, 이를 사용자에게 응답으로 반환한다.
'Programming > Django' 카테고리의 다른 글
[02. Django-allauth] 001. 로그인 화면 추가 (0) | 2024.12.01 |
---|---|
[01. Django] 010. 데이터 요청/응답(Frontend ↔ Backend) (0) | 2024.11.27 |
[01. Django] 008. ORM (0) | 2024.08.07 |
[01. Django] 007. ADMIN (0) | 2024.08.07 |
[01. Django] 006. DBMS연동 (0) | 2024.07.28 |