Django 프론트& 백엔드 개발

Django의 MVT 구조 개념

Data Jun 2026. 1. 4. 00:32

Django는 MVT(Model–View–Template) 구조를 기반으로 웹 애플리케이션을 구성합니다.
이 구조의 핵심은 요청(Request)을 받아 데이터와 화면을 조합해 응답(Response)을 만든다는 점입니다.

 

1. MVT 구조 개념

1️⃣ Model

  • 데이터를 담당
  • 데이터베이스(DB)와 직접 연결
  • Django ORM을 통해 데이터를 조회·저장·수정

 “데이터가 어떻게 생겼고, 어떻게 저장되는가”

 

2️⃣ View

  • 요청(Request)을 처리하는 중심
  • 어떤 데이터를 가져올지(Model)
  • 어떤 화면을 보여줄지(Template) 결정

“이 요청에 대해 무엇을 보여줄까?”

 

3️⃣ Template

  • 화면(HTML)을 담당
  • Django Template Language(DTL)를 사용
  • {% %}, {{ }} 문법으로 동적인 HTML 작성

“화면을 어떻게 보여줄까?”

 

2. 요청부터 응답까지 흐름

  • 클라이언트가 요청(Request)을 보냄
  • View가 요청을 받음
  • View가 필요하면 Model에 데이터 요청
  • View가 Template에 데이터 전달
  • View가 최종 응답(Response)을 반환

이때 핵심 역할을 하는 함수가 바로 render() 입니다.

 

3. render는 두 번 일어난다

1️⃣ 첫 번째 렌더링 (서버에서)

Django가 “빈칸 있는 HTML”을 “완성된 HTML”로 바꿔주는 과정

왜 이 과정이 필요할까?

우리가 작성하는 HTML은 사실 완성본이 아님 👇

<h1>{{ title }}</h1>

이 상태로는 브라우저가 이해를 못 해요.
브라우저는 {{ title }}가 뭔지 모릅니다.

 

Django가 하는 일 (첫 번째 렌더링)

  • Django가 템플릿 파일을 연다
  • {{ }}, {% %} 같은 Django 문법을 읽는다
  • View에서 넘겨준 실제 값을 채운다

예를 들어 👇

return render(request, 'index.html', {
    'title': '안녕하세요'
})

 

Django는 이렇게 바꿉니다 👇

<h1>안녕하세요</h1>

이 순간이 첫 번째 렌더링

 

2️⃣ 두 번째 렌더링 (브라우저에서)

  • HTML → 실제 화면
  • 브라우저가 HTML, CSS를 해석해 화면에 그림

우리가 눈으로 보는 웹 페이지

 

4. 정리하면

Model은 데이터를,
View는 판단을,
Template은 화면을 담당하고,
render는 그 모든 것을 연결한다.

 

그리고 렌더링은
서버에서 한 번, 브라우저에서 한 번 일어난다.