includeタグ

includeタグ

Djangoはincludeタグと呼ばれるHTMLファイルに埋め込めるタグがあります。
それを使うことで他のテンプレート(HTMLファイル)を読み込むことが出来ます。

snippetの作成

今回はtemplatesの下にsnippetsフォルダを作りその中にHTMLファイルを作っていきます。

mkdir templates/snippets
touch templates/snippets/helloworld.html

このファイルを編集していきましょう。

templates/snippets/helloworld.html

<p>Hello world</p>

includeで読み込む

結論から言うと今回の場合は

{% include 'snippets/helloworld.html' %}

を任意のHTMLファイルに挿入すれば読み込まれます。

{% extends 'base.html' %}
{% load static %}

{% block main %}
<ul class="list-group">
    <li class="list-group-item active">News</li>
    {% for news in newses %}
    <li class="list-group-item"><a href="{% url 'sample_app:news_detail' news.pk %}">{{ news.title }}</a></li>
    {% endfor %}
</ul>
{% endblock %}

例えば元々このようなテンプレートがあったとします。
そしてこのテンプレートに先程のhelloworld.htmlを読み込みたいとします。

その場合は

{% extends 'base.html' %}
{% load static %}

{% block main %}
<ul class="list-group">
    <li class="list-group-item active">News</li>
    {% for news in newses %}
    <li class="list-group-item"><a href="{% url 'sample_app:news_detail' news.pk %}">{{ news.title }}</a></li>
    {% endfor %}
</ul>
{% include 'snippets/helloworld.html' %}
<!-- ↑これが増えた -->
{% endblock %}

このようにすればオッケーです。
python manage.py runserverで確認してみましょう。

Hello worldが増えているはずです。