Django 프론트& 백엔드 개발

Django Template과 render 이해하기

Data Jun 2026. 1. 4. 00:06

Django에서 화면에 HTML을 보여주기 위해서는
Template와 **render()**의 개념을 이해해야 합니다.

 

1. Template이란?

Template은 화면(UI)을 담당하는 파일입니다.

  • 보통 .html 파일
  • 브라우저에 실제로 보여지는 구조
  • Django에서는 View가 직접 HTML을 만들지 않고
    Template을 렌더링해서 응답합니다.

즉,

Template = 화면 구성 담당

입니다.

 

2. render()의 역할

View 함수에서 자주 보게 되는 코드입니다.

def index(request):
    return render(request, 'foods/index.html')

render - " 화면으로 만들어서 내보낸다 "()는 내부적으로 다음 일을 합니다.

  • 지정한 template 파일을 찾고
  • HTML을 렌더링한 뒤
  • HttpResponse 객체로 변환해서 반환

결국 render()의 결과는 HttpResponse입니다.

한 줄로 정리하면:

render = Template → HttpResponse 변환기

 

3. templates 폴더는 왜 필요할까?

Django는 HTML 파일을 아무 곳에서나 찾지 않습니다.
정해진 규칙에 따라 templates 디렉토리를 탐색합니다.

 

보통 앱 구조는 이렇게 됩니다.

foods/
 ├─ templates/
 │   └─ foods/
 │       └─ index.html

4. templates/foods 구조를 쓰는 이유

왜 이렇게 앱 이름으로 한 번 더 감싸는 구조를 사용할까요?

이렇게 하면 문제 발생 가능

templates/
 └─ index.html

여러 앱에서 index.html을 만들면
이름 충돌이 발생할 수 있습니다.

 그래서 이렇게 사용

templates/
 └─ foods/
     └─ index.html

이렇게 하면:

  • foods/index.html
  • menus/index.html

처럼 앱별로 명확하게 구분됩니다.

 

Django 공식 권장 구조이기도 합니다.

 

5. 전체 흐름 정리

  • URL 요청 발생
  • View 함수 실행
  • render() 호출
  • Template 로드
  • HTML 렌더링
  • HttpResponse 반환
  • 브라우저에 화면 표시

 

6.  정리하면

  • Template: 화면(UI)을 담당하는 HTML
  • render(): Template을 HttpResponse로 변환
  • templates/app_name/ 구조: 템플릿 충돌 방지용