[Django/Python] 9. 템플릿 확장

SangHyun-Park·2021년 8월 24일
0

Django

목록 보기
12/12

장고 템플릿은 코드에서 중복되는 템플릿코드를 사전에 저장하고 불러오는 기능을 제공한다

보통 Banner 와 Footer 부분이 대표적으로 코드중복이 자주일어나며 해당 코드를 효과적으로 저장하고 불러와 사용할 수 있다

base.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">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <header class="banner row border-bottom justify-content-end">
            <ul class="col-3 list-unstyled">
                
                {% if not request.user.is_authenticated %}
                <li><a href="{% url 'signup' %}"> 회원가입 </a></li>
                <li><a href="{% url 'signin' %}"> 로그인 </a></li>
                {% else %}
                <li>{{request.user}} 님 안녕하세요</li>
                <li><a href="{% url 'signout' %}">로그아웃</a></li>
                {% endif %}
            </ul>
        </header>
        <section>
            {% block content %}{% endblock %}
        </section>

    </div>
</body>
</html>

{% block (blockname) %} 과 {% endblock %} 의 쌍으로 block 구획을 나누며

이 block 은 다른 html 파일이 삽입되는 부분이다

뼈대를 base 에서 짜고 detail 은 block 을 통해 다른 html 을 붙이는 형식

index.html

{% extends 'study/base.html' %}
{% block content %}
type what you want to insert
{% endblock %}

위와같이 다른 html 에 삽입시킬 base.html 파일을 불러오며
block 안에는 base block 안에 삽입될 내용을 넣으면 된다

block 은 (blockname) 과 1:1 동치되며 blockname 에 따라서 여러가지 block 구획을 나누고 삽입시킬 수 있다

profile
https://ppaksang.tistory.com/ 옮겼습니다 !!

0개의 댓글