본문 바로가기
Web/django

(Django) first project8 - template 확장

by 스퀴시 2020. 8. 14.
728x90
SMALL

template 확장이란?

웹사이트 안의 서로 다른 page에서 HTML의 일부를 동일하게 재사용하는 것

즉, <head> 태그같이 공통으로 들어가는 부분의 base를 지정할 수 있다.
header나 footer도 구성가능!

 

Base Template 생성

 

1.blog/template/blog/base.html을 만들어 준다.

 -> 웹페이지의 base가 되는 페이지이다. 

<!--base html-->
{% load static %}
<html>
    <head>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
        <title>SJ's Blog </title>
    </head>
    <body >
        <div class= "page-header">
            <h1><a href="/"> SangJeong's Blog </a></h1>
        </div>
        
        <div class="content container">
            <div class="row">
                <div class="col-md-8">
                {% block content %}   <!--HTML 내에 들어갈 공간 block 을 만드는 것-->
                {% endblock %}
                </div>
            </div>
        </div>
        <hr/>
        <div class="page-footer">
            <a href=""></a>
        </div>
    </body>

</html>

 

위를 보면 block content를 선언해준다. 이 의미는 html 내에 들어갈 공간인 block을 만드는 것이다.

이 곳에 다른 html들이 들어온다.  즉, Base.html을 확장해서 다른 template에 적용 가능한 것이다. 

 

그럼 이 파일을 사용하는 곳을 보겠다. 

 

{% extends 'blog/base.html' %} <!--확장파일 사용-->

{% block content %}
    <div>
        <a href="index/" class="btn" style='btn-dark'> 글 목록</a>
    </div>
{% endblock %}

 

home.html에서 base.html을 확장사용하기 위해 extends를 선언해줘야하며,

base.html에서 사용한 block 안에 들어갈 내용을 정의 해준다.

 

이 것으로 설명을 마치겠다. 너무 간단 해..

LIST