Django

Django 템플릿 확장하기

nyanguk 2021. 1. 20. 11:14

장고는 템플릿 확장기능을 가지고 있다.  post_list.html의 양식을 내용만 바꿔서 사용하고자 할때 유용하게 쓰일 수 있다.

 

먼저 base.html을 만들고 post_list.html 의 내용을 복사하여 붙여넣기 한후  for 구문을 삭제 한 후 아래코드를 를 추가한다

{% block content %}
{% endblock %}

 

<!-- blog/templates/blog/post_list.html -->
{% load static %}
<html>
    <head>
        <link href="https://fonts.googleapis.com/css2?family=Yeon+Sung&display=swap" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&family=Roboto&display=swap" rel="stylesheet">
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
        <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">
        <title>nyanguk의 Django 튜토리얼</title>
    </head>
    <body>
        <div class = title-1>
            <h1> <a href="">nyanguk의 블로그</a></h1>
        </div>
        <div class = post>
            {% block content %}
            {% endblock %}
        </div>
    </body>
</html>

블록을 생성하여 base.html 안에서는 블록을 끼울자리를, 여러 다른 html파일 에서는 블록에 각 파일마다 다른 내용을 넣어주면 base.html에 내용만 바뀌어서 출력되게 된다. 

 

자 그럼 post_list.html파일을 바꿔보자 

가장먼저 base.html과 연동하기 위해서 코드 가장 위에 {% extends 'blog/base.html' %} 을 추가하고 post_list기능을 수행하는 핵심적인 부분인 for문 즉, 블록에 들어갈 부분만 제외하고 모두 없애주면 아래와 같이 코드가 완성된다.

이때 블록임을 표시해주는 {% block content %} {% endblock %} 쌍으로 감싸주는 것을 잊지말자!

{% extends 'blog/base.html' %}
{% block content %}
    {% for post in posts %}
        <div>
            <p>created: {{ post.created_date }}</p>
            <h1><a href="">{{ post.title }}</a></h1>
            <p>{{ post.text|linebreaksbr }}</p>
            <div class="line">
                <p>---------------------------------------------------------------------</p>
            </div>    
        </div>
    {% endfor %}
{% endblock %}

base.html 파일이 추가된 이후 다시 runserver를 실행시킨뒤 접속하면 동일한 페이지가 나오는 것을 확인 할수 있다.