[Jinja2] Modyfikacja zmiennych wewnątrz pętli i poza nią

Z identycznym problemem zderzył się autor poniższego wpisu:

Od niego uprzejmie zapożyczyłem rozwiązanie.

W moim przypadku był potrzebny licznik w Jinja2, W krótkich żołnierskich słowach:

to nie działa:

{% set myCounter = 0 %}

Before loop:
myCounter: {{ myCounter }}

{% set myCounter = 0 %}
{% for i in range(3) %}
{% for j in range(3) %}
{% set myCounter = myCounter + 1 %}
myCounter: {{ myCounter }}
{% endfor %}
{% endfor %}

After loop:
myCounter: {{ myCounter }}

I daje wynik:

Before loop:
myCounter: 0

myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1
myCounter: 1

After loop:
myCounter: 0

Natomiast to działa wybornie:

{% set myCounter = { 'index': 0 } %}

Before loop:
myCounter: {{ myCounter.index }}

{% for i in range(3) %}
{% for j in range(3) %}
{% if myCounter.update({'index': myCounter.index + 1 }) %}{% endif %}
myCounter: {{ myCounter.index }}
{% endfor %}
{% endfor %}

After loop:
myCounter: {{ myCounter.index }}

i daje żądany rezultat:

Before loop:
myCounter: 0

myCounter: 1
myCounter: 2
myCounter: 3
myCounter: 4
myCounter: 5
myCounter: 6
myCounter: 7
myCounter: 8
myCounter: 9
 
After loop:
myCounter: 9