2013-02-27 12 views
6

Nel motore di template Jinja2 (usando Flask), voglio ottenere qualcosa del genere:blocchi riutilizzabili parametrizzati con Jinja2 (Flask) motore di template

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

e poi in vari luoghi:

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

Tuttavia non riesco a trovare una tale caratteristica (ho inventato reusable_blocks per questa domanda) nella documentazione di Jinja. Ciò di cui ho bisogno sono fondamentalmente blocchi riutilizzabili che possono assumere parametri. Qualche idea sa come posso farlo con Jinja2?

risposta

11

È possibile utilizzare le macro.

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

Ulteriori documentazione here.

+0

Grazie amico. Salvato il giorno. –

Problemi correlati