[Django] extends와 include

2023. 7. 26. 13:10

 

Django 템플릿 시스템에서 사용되는 두 가지 기능을 정리하고자 한다.

 

💡 extends

extends는 장고의 템플릿 상속 기능을 나타낸다.

 

이 기능을 사용하면 기본 템플릿(부모 템플릿)을 만들고,

이를 확장하여 추가적인 내용을 포함하는 템플릿(자식 템플릿)을 만들 수 있다.

 

이를 통해 템플릿의 재사용성을 높이고 코드의 중복을 방지할 수 있다.

 

<!-- 부모 템플릿 -->

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}기본 제목{% endblock %}</title>
</head>
<body>
    <div class="container">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>
<!-- 자식 템플릿 -->

{% extends "base.html" %}

{% block title %}확장된 제목{% endblock %}

{% block content %}
    <h1>확장 템플릿</h1>
    <p>기본 템플릿을 확장한 내용</p>
{% endblock %}

자식 템플릿은 extends를 사용해 기본 템플릿을 상속하고, 

{% block %} 태그를 통해 기본 템플릿의 블록을 재정의하거나 새로운 블록을 추가할 수 있다.

 

💡 include

include는 다른 템플릿 파일을 현재 템플릿에 포함시키는 기능이다.

이를 사용해 템플릿 파일의 재사용성을 높일 수 있으며,

특정 부분을 별도의 템플릿 파일로 분리하여 코드를 조직화할 수 있다.

 

예를 들어, 반복되는 HTML 코드를 별도의 템플릿 파일로 분리하고,

여러 곳에서 이를 재사용하고자 할 때 사용할 수 있다.

 

<!-- 반복되는 템플릿 파일 (sub_template.html) -->
<div class="item">
    <h2>{{ title }}</h2>
    <p>{{ content }}</p>
</div>
<!-- 메인 템플릿 파일 -->
<!DOCTYPE html>
<html>
<head>
    <title>메인 페이지</title>
</head>
<body>
    <div class="container">
        {% for item in items %}
            {% include 'sub_template.html' with title=item.title content=item.content %}
        {% endfor %}
    </div>
</body>
</html>

include는 {% include %} 태그를 사용하여 다른 템플릿 파일을 포함하며,

필요에 따라 추가적인 데이터를 넘겨줄 수도 있다.