Hello. I have strange jinja2 behavior when iterating over result produced by itertoos.groupby function. When I don't use loop.index, everything is OK:
import operator
import itertools
from jinja2 import Template
l = [(1, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
i = itertools.groupby(l, lambda e: operator.getitem(e, 0))
template = """
{% for g in i %}
{% for e in g[1] %}
{{ e }}
{% endfor %}
{% endfor %}
"""
tpl = Template(template)
print tpl.render(i=i)
Output is: (1, 'a') (1, 'b') (2, 'c') (3, 'd'), so loop iterates over all elements.
When I call loop.index in loop, I have only last element in output:
import operator
import itertools
from jinja2 import Template
l = [(1, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
i = itertools.groupby(l, lambda e: operator.getitem(e, 0))
template = """
{% for g in i %}
{% for e in g[1] %}
{{ e }} {{loop.index}}
{% endfor %}
{% endfor %}
"""
tpl = Template(template)
print tpl.render(i=i)
Output is (3, 'd') 1
Is it a bug or feature?
P.S. I'm using Jinja2 2.8 and python 2.7
Hello. I have strange jinja2 behavior when iterating over result produced by itertoos.groupby function. When I don't use
loop.index, everything is OK:Output is:
(1, 'a') (1, 'b') (2, 'c') (3, 'd'), so loop iterates over all elements.When I call loop.index in loop, I have only last element in output:
Output is
(3, 'd') 1Is it a bug or feature?
P.S. I'm using Jinja2 2.8 and python 2.7