
Django 공부하기 ✨
템플릿(templates)란 무엇인가?
- Django에서 템플릿이란 어떤 텍스트 파일을 의미한다.
- 템플릿을 통해 HTML, XML, CSV 등 어떠한 텍스트 기반 포맷의 파일도 생성할 수 있다.
- 템플릿은 렌더링시 실제 데이터로 대체되는 변수를 가지며 그 안의 로직을 통제 가능한 태그도 포함할 수 있다.
- 템플릿 안에서 변수는 {{ variable }}과 같이 두 개의 중괄호로 감싸 표현한다.
(1) 템플릿(templates) 상속
- 상속을 통해 전체 뼈대를 짜두고 각 부분을 block으로 정의해서 해당 템플릿을 상속하는 템플릿이 그 부분을 오버라이드 할 수 있게 해준다.
- 부모 템플릿을 상속하는 템플릿은 extends 태그를 이용해 부모 템플릿을 오버라이드하고 상속자 템플릿의 내용에 따라 부모 템플릿의 block 부분을 대체한다.
(1) 부모 템플릿
<!DOCTYPE html>
<html lang="ko">
<head>
<link rel="stylesheet" href="style.css">
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
(2) 상속 템플릿
{% 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 %}
(3) 결과
<!DOCTYPE html>
<html lang="ko">
<head>
<link rel="stylesheet" href="style.css">
<title>My amazing blog</title>
</head>
<body>
<div id="sidebar">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
</div>
<div id="content">
<h2>Entry one</h2>
<p>This is my first entry.</p>
<h2>Entry two</h2>
<p>This is my second entry.</p>
</div>
</body>
</html>
(4) 템플릿 상속 시 유의 할 점
- {% extends %} 태그는 상속자 템플릿의 첫 태그여야 상속이 발생한다.
- 템플릿 작성 시 반복되는 사항이 발생하면 block화 하는 것이 좋다.
- 같은 템플릿 안에서는 같은 이름을 갖는 block 태그는 쓸 수 없다.
'Study > Django' 카테고리의 다른 글
| [Django] 데이터 저장 (10) (0) | 2023.09.12 |
|---|---|
| [Django] URL 별칭 (9) (0) | 2023.09.12 |
| [Django] 조회와 템플릿 (8) (0) | 2023.09.11 |
| [Django] 관리자 사용하기 (7) (0) | 2023.09.08 |
| [Django] 모델 (6) (0) | 2023.09.08 |