2013-02-27 24 views
6

Trong động cơ templating Jinja2 (sử dụng Flask), tôi muốn đạt được một cái gì đó như thế:khối tái sử dụng tham số với Jinja2 (Flask) động cơ templating

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

và sau đó ở những nơi khác nhau:

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

Tuy nhiên tôi không thể tìm thấy một tính năng như vậy (tôi đã tạo ra reusable_blocks cho câu hỏi này) trong tài liệu Jinja. Những gì tôi cần là các khối cơ bản có thể tái sử dụng có thể lấy các tham số. Bất kỳ ý tưởng biết làm thế nào tôi có thể làm điều đó với Jinja2?

Trả lời

11

Bạn có thể sử dụng 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> 

Tài liệu khác here.

+0

Cảm ơn người đàn ông. Đã cứu sống ngày. –

Các vấn đề liên quan