27

jinja2で2つのリスト変数を連結するにはどうすればよいですか?

例えば

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 %}

したがって、+ を使用して 2 つのリストを連結しようとしましたが (Python のように)、それらはリストではなく、pythonxrangeオブジェクトであることがわかりました。

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

同じ for ループで GRP1 と GRP2 の連結を繰り返す方法はありますか?

4

2 に答える 2

21

私の知る限り、ネイティブのJinja2テンプレートを使用してそれを行うことはできません。新しい結合された iterable を作成し、それをテンプレートに渡す方がよいでしょう。

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 %}
于 2013-04-08T13:25:13.617 に答える