带有Jinja2(Flask)模板引擎的参数化可重复使用的块

时间:2013-02-27 07:51:15

标签: python flask jinja2

在Jinja2模板引擎(使用Flask)中,我想实现类似的东西:

{% reusable_block avatar(user) %}
     <img src='{{ user.avatar }}' title='{{ user.name }}'/> 
{% reusable_block %}

然后在各个地方:

{% for u in users %}
    {% call avatar(u) %}
{% endfor %}

但是我在Jinja文档中找不到这样的功能(我为这个问题编写了reusable_blocks)。我需要的是基本上可以带参数的可重用块。任何想法都知道如何用Jinja2做到这一点?

2 个答案:

答案 0 :(得分:12)

您可以使用宏。

{% macro input(name, value='', type='text', size=20) -%}
    <input type="{{ type }}" name="{{ name }}" value="{{value|e }}" size="{{ size }}">
{%- endmacro %}


<p>{{ input('username') }}</p>
<p>{{ input('password', type='password') }}</p>

更多文档here

答案 1 :(得分:2)

我认为你正在寻找macros