Jinja2テンプレートにおいて、importでマクロをロードする
今日は、『つくってマスターPython』の6-3 “Jinja2テンプレートの活用”で学んだことをアウトプットします。
マクロは、同じファイル内でなく、別ファイルに用意することもできます。この場合、importを使って以下のように読み込みます。これで指定したファイルが読み込まれ、変数に設定されます。マクロは、その変数内にある要素として「変数.マクロ(・・・・・)」という形で呼び出すことができます。
{% import ファイルパス as 変数 %}
「templates」フォルダ内に「macro.html」というファイルを用意し、以下を記述します。
{% macro row(item) -%}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.mail}}</td>
</tr>
{%- endmacro %}
ここでは、rowマクロを定義してあります。<table>の<tr>部分を出力するもので、引数にitemオブジェクトを渡すと、その中からid, name, mailといった項目をまとめて表示します。
作成したマクロファイルを利用するためにindex.htmlを編集します。
マクロの定義の書き方については、以前に学びました。
{% extends "layout.html" %}
{% block content %}
<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>MAIL</th>
</tr>
{% import 'macro.html' as m %}
{% for item in data %}
{{m.row(item)}}
{% endfor %}
</table>
{% endblock %}
ここでは、テーブルの内容を出力する手前で、{% import ‘macro.html’ as m %}としてmacro.htmlを読み込んでいます。そしてテーブルの出力部分では、{{m.row(item)}}という形でrowマクロを実行しています。
いいなと思ったら応援しよう!
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪