2017-08-31 53 views
0

我是使用Jinja的新手,并且正在尝试使用我的应用程序中的宏。所以我有一个宏,使用特殊的呼叫块,像这样调用另一个:Flask Jinja宏<input caller =“Macro Anonymous”>

{% macro macro1(x, y) %}      
    <div class="row"> 
     {% call macro2(x,y)%}{% endcall %} 
    </div>      
{% endmacro %} 

但当我查看渲染的模板,我可以在我的输入字段中看到一个陌生来电者属性:

<input caller="<Macro anonymous>"> 

我做错了什么,我只想知道为什么会发生这种情况?

回答

0

这是因为您正在调用的宏未定义。

您定义了macro1,但您打电话给macro2

{% macro macro1(x, y) %}      
    <div class="row"> 
     {% call macro1(x,y)%}{% endcall %} 
    </div>      
{% endmacro %} 

有一个在documentation一个很好的例子也是如此。

+0

嗨Mekicha,感谢您的链接。我只是想问,我已经在同一个文件中定义了两个宏,所以不应该定义macro2? –

+0

是的,你可以定义。但如果你打电话,你必须调用一个预定义的宏已经 – Mekicha

+0

我注意到在我的文件中,当我定义了这两个宏和第二个宏调用第一个时,我仍然有同样的问题。但是这不应该发生,因为我正在调用一个预定义的宏,它是上面的那个宏? –