Pythonと「Flask」でテンプレートファイルを継承を行う方法について入門者向けにまとめました。
【Flask】テンプレートファイルの継承
Flaskには、テンプレートファイルを継承する機能があります。
これを使うことで、効率よく同じレイアウトで複数のページを作成することができます。
掲示板やブログなどのサイトは、コンテンツ(記事や書き込み)以外は、同じ構造、レイアウトが使用されている場合が多いです。
そのため、各ページを個別に作成するよりも、テンプレートの継承を活用して、共通な部分は使い回すことで効率的にページを増やすことができます。
テンプレート継承を使うにあたって、親テンプレートと子テンプレートの違いを理解する必要があります。
項目 | 概要 |
---|---|
親テンプレート(baseテンプレート) | 各ページに共通する部分のテンプレート(要はヘッダーやフッターなど、ページごとに異なるコンテンツ以外の部分)。 |
子テンプレート | コンテンツ部分のテンプレート(要はブログの記事部分など、ページごとに異なるコンテンツの部分)。 |
つまり、親テンプレートの内容を子テンプレートが継承して、1つのページを作成します。
テンプレートの継承は、以下のように記述するのが基本となります。
記述例
●親テンプレート(base.htmlなど)
: {% block 名前 %} {% endblock %} :
●子テンプレート(index.html、page1.htmlなど)
{% extends 継承元のファイル名 %} {% block 名前 %} : {% endblock %}
動画解説
本ページの内容は以下動画でも解説しています。
ソースコード
具体的なコードにすると以下のようになります(前回と同じWebアプリを継承を使って作ってみます)。
■server.py
→pythonファイル(app.runするもの)
■templates/base.html
→親テンプレートのHTMLファイル(共通化部分)
■templates/index.html
→子テンプレートのHTMLファイル(トップページのコンテンツ部分)
■static/css/main.css
→HTMLファイルで使うCSSファイル
■実行結果(前回と同じ)
こんにちは ユーザー1 さん
現在時刻:2021/07/04 00:37:22
このように、継承を使うと、親テンプレートの内容(base.html)を複数のページで使いまわすことができ、
新規で作成するページの記述はコンテンツ部分だけで済むため管理が楽になります。

コメント