template ファイルで別のhtmlファイルを読み込む方法

今回はDjangoのテンプレートにて別のテンプレートファイルを読み込む方法について解説いたします。
テンプレートファイルを書くとき、一つのファイルにまとめてしまうとかなりの長さになってしまい読みづらいと思う人も多いと思いますので、可読性を上げるためにも別のテンプレートファイルを読み込む方法についていくつか解説いたします。

スポンサーリンク
目次

別のテンプレートファイルを読み込む方法

Django では別のテンプレートファイルを読み込みたいときは以下の方法を用いることで実現できます。

・「include」タグを使用する
・「extends」タグと「block」タグを使用する

主にこれら2つを使うことで html の読みこみ及び、継承をすることができます。
前者の方法は別のファイルを子ファイルとして読み込むのに対して、後者は親ファイルを呼び出すような方法になります。

なので、別ファイルの html 要素を単純にくっつけたい場合は「include」を、ベースとなる html ファイルを用意してそこからさまざまな html ファイルにと拡張したい場合は「extends」を使用するイメージになるかと思います。

include タグの使い方

それでは早速 include の使い方について解説いたします。

1. テンプレートファイルを読み込むための設定(※重要※)

まずは テンプレートファイルを include させるために設定を行っていきます。
テンプレートファイルは大体は以下のようにプロジェクトフォルダ配下に [template] というフォルダを作ってその下に拡張子が “.html” のテンプレートファイルを作成していくことになると思います。

この場所に配置したテンプレートファイルを読み込ませるためには「settings.py」に以下のような技術を加える必要があります。

TEMPLATE_DIR = os.path.join(BASE_DIR,“template”)

これで「template」フォルダを見に行けるようになりますので、忘れずに記載しましょう。

テンプレートファイルの include

それでは設定が終わったので実際にファイルの include を行っていきます。
include させたい以下のようなファイルを用意します。

上記の内容は簡単な ヘッダー要素を意識してます。
このファイルに対して以下のように include することで 上記のヘッダ 要素を読み込むことができます。

上記の記述で実際に page.html にアクセスすると以下のように html ファイルが構成されていることがわかると思います。

extends タグの使い方

それでは次に [extends] タグの使い方について解説いたします。

[extends] タグを使うにはまずはベース、親となる html ファイルを用意します。
親となる html ファイルには以下のように記述することで継承先の内容を埋め込む位置を指定できます。

{% block <ブロック名> %}
{% endblock %}

ここでは、例として以下のような [base.html] ファイルを用意します。

上記のファイルには3つのブロックを用意しました。

・タイトルを記述する title ブロック
・固有のコンテンツを記述する content ブロック
・html ファイルごとに javascript を記述するための extrajs ブロック

これで引き継ぎ先のファイルでそれぞれのブロックに対して html 要素を実装すれば記載したブロックの内容の html 要素と base.html に記載した html 要素で構成されたファイルが出来上がります。

引き継ぎ先のファイルには以下のように extends タグを記述します。

{% extends ‘base.html’ %}

そしてそれぞれ用意したブロックに対して内容を記載していきます。
ここではファイル名は content.html にします。

これで html 要素の継承ができました。
実際に Django から content.html にアクセスすると以下のように html が構成されているのがわかると思います。

いかがでしたでしょうか。
include と extends タグを使いこなすとだいぶ html ファイルがコンパクトにまとまって見やすくなると思いますので、積極的に使っていくようにしましょう。

今回はここまでです。
お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる