Django
13. 템플릿 상속
테니드2
2021. 4. 8. 21:06
템플릿 상속을 통해서 템플릿 코드를 재사용 할 수 있다. 부모 템플릿은 템플릿의 뼈대를 만들어주고 {% block %} 태그를 통해 하위로 상속해줄 부분을 지정해주면, 자식 템플릿은 부모 템플릿의 뼈대는 그대로 재사용하고 이 때는 {% extends "부모 템플릿.html" %} 태그를 사용하고 {% block %} 부분만 채워주면 된다.
block.super는 부모 그대로 사용한다는 의미이다.
- base.html
<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
{# {% load static %} #}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<title>{% block title %}My Amazing Site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Project_Home</a></li>
<li><a href="/admin/">Admin</a></li>
</ul>
{% endblock %}
<br>
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
- base_books.html
<!-- base_books.html -->
{% extends "base.html" %}
{% block title %}Books Application Site{% endblock %}
{% block sidebar %}
{{ block.super }}
<ul>
<li><a href="/books/">Books_Home</a></li>
</ul>
{% endblock %}
- index.html
<!-- book/index.html -->
{% extends "base_books.html" %}
{% block content %}
<h2>Books Management System</h2>
<ul>
{% for modelname in model_list %}
{% with "books:"|add:modelname|lower|add:"_list" as urlvar %}
<li><a href="{% url urlvar %}">{{ modelname }}</a></li>
{% endwith %}
{% endfor %}
</ul>
{% endblock content %}
-결과 화면

출처: 한빛미디어, Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍