Làm thế nào để xuất loop.count trong mẫu pyin jinja?


167

Tôi muốn có thể xuất vòng lặp hiện tại vào mẫu của tôi.

Theo các tài liệu: http://wsgiarea.pocoo.org/jinja/docs/loops.html , có một biến loop.count mà tôi đang cố gắng sử dụng.

Tôi có những điều sau đây:

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

Mặc dù không có gì là đầu ra cho mẫu của tôi. Cú pháp đúng là gì?

Câu trả lời:


374

Biến đếm bên trong vòng lặp được gọi là loop.index trong 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

Xem http://jinja.pocoo.org/docs/tem mẫu / để biết thêm.


166
Đáng nói là nếu bạn muốn có một chỉ số dựa trên 0, bạn có thể sử dụng loop.index0thay thế.
vào

Điều hoàn toàn tuyệt vời là tài liệu tham khảo về điều này tôi không thể tìm thấy trên trang web của họ, trong khi bộ đếm và bộ đếm 0 được ghi lại nhưng không có trong phiên bản tôi đã cài đặt ngày hôm qua.
njzk2

42

Bên trong khối for-loop, bạn có thể truy cập một số biến đặc biệt bao gồm - loop.indexnhưng không loop.counter. Từ các tài liệu chính thức :

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).

14

nếu bạn đang sử dụng django, hãy sử dụng forloop.counterthay vìloop.counter

<ul>
{% for user in userlist %}
  <li>
      {{ user }} {{forloop.counter}}
  </li>
      {% if forloop.counter == 1 %}
          This is the First user
      {% endif %}
{% endfor %}
</ul>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.