How to output loop.counter in python jinja template?

后端 未结 5 522
-上瘾入骨i
-上瘾入骨i 2020-12-02 06:59

I want to be able to output the current loop iteration to my template.

According to the docs: http://wsgiarea.pocoo.org/jinja/docs/loops.html, there is a loop.count

相关标签:
5条回答
  • 2020-12-02 07:00

    in python:

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

    in template:

    {% for k,v in enumerate(list) %}
    {% endfor %}
    
    0 讨论(0)
  • 2020-12-02 07:04

    if you are using django use forloop.counter instead of loop.counter

    <ul>
    {% for user in userlist %}
      <li>
          {{ user }} {{forloop.counter}}
      </li>
          {% if forloop.counter == 1 %}
              This is the First user
          {% endif %}
    {% endfor %}
    </ul>
    
    0 讨论(0)
  • 2020-12-02 07:18

    The counter variable inside the loop is called loop.index in 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
    

    See http://jinja.pocoo.org/docs/templates/ for more.

    0 讨论(0)
  • 2020-12-02 07:21

    Inside of a for-loop block, you can access some special variables including loop.index --but no loop.counter. From 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 讨论(0)
  • 2020-12-02 07:23

    change this {% if loop.counter == 1 %} to {% if forloop.counter == 1 %} {#your code here#} {%endfor%}

    and this from {{ user }} {{loop.counter}} to {{ user }} {{forloop.counter}}

    0 讨论(0)
提交回复
热议问题