Списки конкатенаций в JINJA2

Как я могу объединить две переменные списка в jinja2?

НАПРИМЕР

GRP1 = [1, 2, 3]
GRP2 = [4, 5, 6]

{# This works fine: #}
{% for M in GRP1 %}
    Value is {{M}}
{% endfor %}


{# But this does not: #}
{% for M in GRP1 + GRP2 %}
    Value is {{M}}
{% endfor %}

Итак, я попытался объединить два списка, используя + (как и в Python), но оказывается, что они не являются списками, а объектами python xrange:

jijna2 error: unsupported operand type(s) for +: 'xrange' and 'xrange'

Есть ли способ для меня перебрать конкатенацию GRP1 и GRP2 в том же для цикла?

Ответ 1

AFAIK вы не можете сделать это, используя собственный шаблон Jinja2. Вам лучше создать новый комбинированный итеративный и передать его вашему шаблону, например:

from itertools import chain

x = xrange(3)
y = xrange(3, 7)
z = chain(x, y) # pass this to your template
for i in z:
    print i

Согласно комментариям, вы можете явно преобразовать итерации в списки и объединить их:

{% for M in GRP1|list + GRP2|list %}