2013-02-27 2 views
6

В jinja2 шаблонизаторе (используя колбу), я хочу, чтобы добиться чего-то вроде этого:Параметризованные многоразовые блоки с jinja2 (Flask) шаблонизатором

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

, а затем в различных местах:

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

Однако я не могу найти такую ​​возможность (я составил reusable_blocks для этого вопроса) в документации Jinja. Мне нужны в основном многоразовые блоки, которые могут принимать параметры. Любые идеи знают, как я могу это сделать с Jinja2?

ответ

11

Вы можете использовать макросы.

{% 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.

+0

Спасибо человеку. Экономит день. –

Смежные вопросы