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는 그 모든 것을 연결한다.
그리고 렌더링은
서버에서 한 번, 브라우저에서 한 번 일어난다.
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django에서 템플릿·정적 파일을 샌드위치 구조로 쓰는 이유 (0) | 2026.01.04 |
|---|---|
| 정적 파일(static files)이란? (0) | 2026.01.04 |
| Django Template과 render 이해하기 (0) | 2026.01.04 |
| Django에서 메인 페이지(빈 경로)가 404가 뜨는 이유 (0) | 2026.01.03 |
| Django에서 URL 작성할 때 알아두면 좋은 규칙들 (1) | 2026.01.03 |