2012-08-27 6 views
77

テンプレートに現在のループの繰り返しを出力したいと考えています。python jinjaのテンプレートでloop.counterを出力するには?

文書によると、http://wsgiarea.pocoo.org/jinja/docs/loops.htmlには、私が使用しようとしているloop.counter変数があります。

私は次があります。

<ul> 
{% for user in userlist %} 
    <li> 
     {{ user }} {{loop.counter}} 
    </li> 
     {% if loop.counter == 1 %} 
      This is the First user 
     {% endif %} 
{% endfor %} 
</ul> 

何が私のテンプレートに出力されているんけれども。正しい構文は何ですか?

+0

'{%for userlist%} 'が2回見つかりました。私はそれが正しいとは思わない。 – obmarg

答えて

176

ループ内のカウンタ変数は、loop.indexとjinja2で表されます。

>>> from jinja2 import Template 

>>> s = "{% for element in elements %}{{loop.index}} {% endfor %}" 
>>> Template(s).render(elements=["a", "b", "c", "d"]) 
1 2 3 4 

http://jinja.pocoo.org/docs/templates/を参照してください。

+68

0ベースのインデックスが必要な場合は、代わりに '' loop.index0''を使用することができます。 – ereOn

+0

全く驚くべきことは、私は自分のウェブサイトで見つけられなかったが、counterとcounter0は文書化されているが昨日インストールしたバージョンには存在しないということだ。 – njzk2

6

forループブロックの内部では、loop.index --but no loop.counterなどの特殊変数にアクセスできます。 the official docsから:また

Variable Description 
loop.index The current iteration of the loop. (1 indexed) 
loop.index0 The current iteration of the loop. (0 indexed) 
loop.revindex The number of iterations from the end of the loop (1 indexed) 
loop.revindex0 The number of iterations from the end of the loop (0 indexed) 
loop.first True if first iteration. 
loop.last True if last iteration. 
loop.length The number of items in the sequence. 
loop.cycle A helper function to cycle between a list of sequences. See the explanation below. 
loop.depth Indicates how deep in a recursive loop the rendering currently is. Starts at level 1 
loop.depth0 Indicates how deep in a recursive loop the rendering currently is. Starts at level 0 
loop.previtem The item from the previous iteration of the loop. Undefined during the first iteration. 
loop.nextitem The item from the following iteration of the loop. Undefined during the last iteration. 
loop.changed(*val) True if previously called with a different value (or not called at all). 
+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](/レビュー/低品質の投稿/ 18242231) – Isma

0

、あなたはループ構造上のタグを置くことができ、あなたのカウンターを取得します。

<ol> 
    {% for i in users %} 
     <li>ITEM</li> 
    {% endfor%} 
    </ol> 
関連する問題