18

view.jinja

{% extends "layout/defaultlayout.jinja" %}
{% include('details.jinja') %}

defaultlayout.jinja

{% import 'elements/macros.jinja' as html %}

しかし、details.jinja でマクロhtmlを再インクルードせずに使用することはできません。

4

2 に答える 2

14

あなたの例から、 をインポートしようとしているかのように見え、それを というマクロとして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 内で呼び出されるマクロを定義し、htmlmacros.jinja を としてインポートしてmacrosから、 で呼び出す必要がありますmacros.html(...)

それは理にかなっていますか?

于 2013-12-01T02:59:37.247 に答える