view.jinja
{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}
defaultlayout.jinja
{% import 'elements/macros.jinja' as html %}
しかし、details.jinja でマクロhtmlを再インクルードせずに使用することはできません。
あなたの例から、 をインポートしようとしているかのように見え、それを というマクロとしてmacros.jinja
使用しhtml
ます。そのようには機能しません。
マクロは jinja ファイル内で定義され、そこに名前が付けられます。
macros.jinja:
{% macro dostuff(x,y,z) %}
<a href="{{ x }}" title="{{y}}">{{z}}</a>
{% endmacro %}
次に、インポート タグを使用してファイル全体をインポートできます。
{% import "macros.jinja" as macros %}
したがって、現在のネームスペースにはmacros
、macros.jinja ファイルを指す があります。dostuff
マクロを使用するには、 を呼び出す必要がありますmacros.dostuff(...)
。
macros.jinja 内で呼び出されるマクロを定義し、html
macros.jinja を としてインポートしてmacros
から、 で呼び出す必要がありますmacros.html(...)
。
それは理にかなっていますか?