Back-End/Python Django

[Django] 템플릿 상속하기

Hoplin 2022. 2. 22. 12:39
반응형

Django는 템플릿을 상속시킬 수 있는 기능을 가지고 있다. 템플릿 상속의 장점은

  • 템플릿 코드를 재사용할 수 있다
  • 사이트의 룩 앤 필을 일관성있게 보여줄수 있다

와 같은 장점들이 있다. 부모 템플릿은 뼈대를 만들고, {% block %}태그를 통해 하위로 상속해줄 부분을 지정해 주면, 자식 템플릿은 부모 템플릿의 뼈대를 그대로 재사용하고 {% block %}부분만 채워주면 된다. 채워줄때는 부모 템플릿에서 지정한 블럭 이름을 block 옆에 붙여 채우고자 하는 블럭을 지정해주면 된다.

<!-- parent.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}My site{% endblock %}</title>
</head>
<body>
    <div id="sidebar">
        {% block sidebar %}
            <ul>
                <li><a href={% url 'polls:index' %}>Home</a></li>
            </ul>
        {% endblock %}
    </div>
    <div>
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>
<!-- child.html -->
{% extends "inheritTest/parent.html" %}

{% block title %}Title from child.html{% endblock %}
{% block content %}
    {% for i in testSequence%}
        <h2>{{ i }}</h2>
    {% endfor %}
{% endblock %}

parent.html에 보면 {% block %}태그가 3개가 있지만, child.html에는 두개의 {% block %}태그만 있다. 이와 같이 {% block %}태그를 모두 채워줄 필요가 없다. 만약 채워지지 않은 블럭이 있다면, 해당 블럭은 부모 템플릿의 내용을 그대로 사용한다.

반응형