본문 바로가기
Web Backend/Django

[Django] Django 학습 정리 - 템플릿 문법 정리 (Jinja, extends, block)

by 요호유후 2025. 3. 29.
반응형

지금까지 Django 학습한 내용을 바탕으로 정리를 해보려 한다.

 

목차
1. Jinja
2. extends
3. block
[작업 환경]
MacOS, PyCharm
pyenv, poetry
Python, Django

 

 

1. Jinja

1. Jinja 란?

      - Django에서 사용하는 템플릿 문법이다.

      - HTML과 Python 데이터를 연결해주는 역할을 한다.

 

2. Jinja 문법 정리

문법 설명
{{ 변수명 }} 변수 값 출력
{% if문 %} ... {% endif %} 조건문
{% for문 %} ... {% endfor %} 반복문
{# 주석 처리 #} 주석 처리
{% include '파일명.html' %}  특정 템플릿 삽입
{% url 'url_name' pk=1 %} URL Reverse (URL 생성)
{% load static %}
<img src="{% static 'img/logo.png' %}">
정적 파일 경로 지정

 

 

2. extends

1. extends 란?

      - 부모 템플릿을 상속받을 때 사용하는 태그이다.

      - 자식템플릿 가장 첫 줄에 작성한다.

      - 부모 템플릿의 레이아웃을 그대로 사용하면서 필요한 부분 재정의 할 수 있다.

 

2. extends 사용예시

# base.html (부모템플릿)

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}기본 제목{% endblock %}</title>
</head>
<body>
    <div id="content">
        {% block content %}
        기본 콘텐츠입니다.
        {% endblock %}
    </div>
</body>
</html>

 

# list.html (자식템플릿)
 
{% extends 'base.html' %}

 

 

3. block

1. block 이란?

      - 자식 템플릿에서 덮어쓸 수 있는 영역이다.

      - 부모 템플릿에 block <block명>을 작성하면 자식 템플릿에서 동일 이름으로 코드를 덮어 쓴다.

      - 쉽게, 부모 템플릿에 block content라는 이름으로 영역을 만들어 놓고

         자식 템플릿에 blck content라는 이름으로 해당 영역을 재정의(오버라이딩) 하는 것이다.

 

2. block 사용예시

# base.html (부모템플릿)

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}기본 제목{% endblock %}</title>
</head>
<body>
    <header>공통 헤더</header>

    <main>
        {% block content %}
        기본 콘텐츠
        {% endblock %}
    </main>

    <footer>공통 푸터</footer>
</body>
</html>

 

# list.html (자식템플릿)

{% extends "base.html" %}

{% block title %}홈페이지{% endblock %}

{% block content %}
    <h1>환영합니다!</h1>
{% endblock %}

 

 

 

반응형

댓글