WEB

[Django 03] 템플릿 상속

mhko411 2021. 3. 8. 23:47
728x90

프로젝트가 커질수록 만들어야하는 페이지도 증가한다. 매번 일정부분 똑같은 내용을 모두 새롭게 만들지 않고 기본 템플릿을 상속하여 페이지를 만들어간다면 효율적이다. Django에서는 템플릿을 상속하는 기능을 제공하고 있다.


settings.py ->TEMPLATES

상속을 사용하기 위해서는 TEMPLATES의 DIRS이라는 리스트에 디렉터리를 설정해줘야한다.

DIRS = [BASE_DIR / [프로젝트 이름] / templates]

다음과 같이 기본이 되는 템플릿을 프로젝트에 생성한다. 그리고 {% block %} {% endblock %}을 지정한다. 다른 HTML문서에서는 이 block부분만 채우면된다. 그리고 title과 content라는 이름을 함께 적었는데 다른 HTML문서에서 사용할 때 정의한 이름의 위치에 따라 배치가 된다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <nav></nav>
  {% block title %}
  {% endblock %}
  {% block content %}
  {% endblock %}
</body>
</html>

 

상속을 사용하기 위해서는 먼저 부모가되는 템플릿을 불러와야한다.

아래의 코드처럼 {% extends %}를 통해 부모 템플릿인 base.html을 사용할 수 있도록 한다. 이때 부모템플릿을 최상단에 정의해야한다.

이후 block 태그 안에 html 태그를 활용하여 레이아웃을 구성하도록 한다.

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}

{% block content %}
{% for entry in blog_entries %}
    <h2>{{ entry.title }}</h2>
    <p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}

Django의 설계철학 중에 중복 코드를 최대한 없애야 하는 것이 있다. 이를 실현할 수 있는 것이 템플릿 상속이다. 앞으로 템플릿 상속을 통해 중복 코드를 줄여 효율을 높이도록 하자.

'WEB' 카테고리의 다른 글

[Django 05] form 사용하기  (0) 2021.03.09
[Django 04] URL 분리하기  (0) 2021.03.09
[Django 02] Django Template Language(DTL)  (0) 2021.03.08
[Django 01] 첫 번째 프로젝트 생성하기  (0) 2021.03.08
[Django 00] Intro  (0) 2021.03.08