Jinja2の継承とインクルード
Jinja2は継承しか知らないまま使ってきたが、include
という便利なものがあることを知った。
参考: Jinja2 のインクルード機能を使ってより DRY に - present
Jinja2のextends
では、
<div class="content1">
{% block content1 %} {% endblock %}
</div>
<div class="content2">
{% block content2 %} {% endblock %}
</div>
のように、テンプレートを切り分けて表示しようとすると、うまくいかない。 Flaskの呼び出しでは、
render_template("content2.html", args)
のようにするしかなく、このままではcontent1
の内容が表示されない。そこでinclude
を利用する。
<div class="content1">
{% include "content1.html" %}
</div>
<div class="content2">
{% include "content2.html" %}
</div>
のようにして、このhtmlファイルの名前でrender_template
すればいい。
render_template("main.html", args)
include
を使えば、ページネーションなどの一部分だけ動的に変更したいという希望が容易に達成できる。
Jinja2のdocを読もう。
コメント