231

現在のループ反復をテンプレートに出力できるようにしたい。

ドキュメントによると、私が使用しようとしているloop.counter変数があります:

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

しかし、私のテンプレートに出力されています。正しい構文は何ですか?

4

5 に答える 5

487

ループ内のカウンター変数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

に加えてloop.index

  • loop.index00(インデックスは)から始まります
  • loop.revindex(逆インデックス;で終わる1
  • loop.revindex0(逆インデックス;で終わる0
  • 詳細については、http://jinja.pocoo.org/docs/templates/をご覧ください。
于 2012-08-27T18:08:59.213 に答える
61

-loopブロック内では、(ではなく)forなどのいくつかの特別な変数にアクセスできます。公式ドキュメントから:loop.indexloop.counter

変数 説明
loop.index ループの現在の反復。(1つのインデックス付き)
loop.index0 ループの現在の反復。(0インデックス付き)
loop.revindex ループの終わりからの反復回数(1つのインデックス付き)
loop.revindex0 ループの終わりからの反復回数(0インデックス付き)
loop.first 最初の反復の場合は真。
loop.last 最後の反復の場合はTrue。
loop.length シーケンス内のアイテムの数。
loop.cycle シーケンスのリスト間を循環するヘルパー関数。
loop.depth 再帰ループの現在のレンダリングの深さを示します。レベル1から開始
loop.depth0 再帰ループの現在のレンダリングの深さを示します。レベル0から開始
loop.previtem ループの前の反復からのアイテム。最初の反復では未定義。
loop.nextitem ループの次の反復からのアイテム。最後の反復では未定義です。
loop.changed(*val) 以前に別の値で呼び出された(またはまったく呼び出されなかった)場合はTrue。
于 2014-07-25T15:24:05.613 に答える
25

Djangoを使用している場合は、次forloop.counterの代わりに使用してくださいloop.counter

<ul>
{% for user in userlist %}
  <li>
      {{ user }} {{forloop.counter}}
  </li>
      {% if forloop.counter == 1 %}
          This is the First user
      {% endif %}
{% endfor %}
</ul>
于 2019-01-10T02:52:37.217 に答える
0

実際の例:

{% for image in item['images'] %}
    {% set image_id = item_id ~ '-preview-' ~ loop.index0 %}
    <div id="{{ image_id }}" class="overlay">
        <a class="cancel" href="#{{ item_id }}"></a>
        <div class="popup">
            {% set src = image if image.startswith('http') else '/static/images/store/' ~ item_id ~ '/' ~ image %}
            <a href="{{ src }}"><img class="modal-img" src="{{ src }}"/></a>
        </div>
    </div>
{% endfor %}
于 2021-08-06T15:48:36.397 に答える
-1

Pythonコードの場合:

env = Environment(loader=FileSystemLoader("templates"))
env.globals["enumerate"] = enumerate

テンプレート内:

{% for idx, val in enumerate(list) %}
    {{ idx }}. {{val}}
{% endfor %}
于 2020-11-13T17:32:25.770 に答える