2012-03-07 27 views
13

Jinja cho phép tôi làmLooping trên tập con trong Jinja

{% for item in all_items %} 
    {{ item }} 
{% endfor %} 

nhưng tôi muốn để có thể chỉ lấy n mục đầu tiên; bằng Python đó sẽ là

for item in all_items[:n]: 

Có cách nào thanh lịch để làm điều này trong Jinja, trừ

{% for item in all_items %} 
    {% if loop.index <= n %} 
     {{ item }} 
    {% endif %} 
{% endfor %} 

Trả lời

20

Bạn có thể sử dụng cú pháp python lát bình thường.

>>> import jinja2 
>>> t = jinja2.Template("{% for i in items[:3] %}{{ i }}\n{% endfor %}") 
>>> items = range(10) 
>>> print(t.render(items=items)) 
0 
1 
2 
+2

Như thường lệ trong cuộc sống, đôi khi chúng ta không thấy rõ ràng nhất. Cảm ơn :) –

+0

@miku, làm thế nào để có được 3 mục cuối cùng? – Syed

+0

@miku, đừng lo, tôi đã nhận nó ở đây [-3:] http://stackoverflow.com/a/646654/1292050 – Syed