2013-04-08 23 views
13

jinja2'deki iki liste değişkenini nasıl birleştirebilirim?JINJA2 içinde listelerin birleştirilmesi

E.G.

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

Yani, (eğer Python yazar gibi) Ben + kullanarak iki liste bitiştirmek çalıştık ama onlar listeleri olmadıklarını çıkıyor, ancak piton xrange nesneler:

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

mi döngü için GRP1 ve GRP2'nin birleştirme üzerinde yinelemenin bir yolu var mı? AFAIK, yerel Jinja2 templating kullanarak bunu yapamazsınız.

+0

artarda GRP1 + GRP2' üzerinden şu anda kullanılabilir. Benim jinja2 sürümüm v.2.9.5' – Hsiao

cevap

14

Sen mesela, yeni bir iterable kombine oluşturma ve şablona o geçen daha iyi olur:

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 

yorum göre, açıkça listeler halinde Iterables dönüştürmek ve bu arada kullanabilirsiniz:

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

Cevabınız için teşekkürler. Sorun şu ki, onu doğrudan Python'da kullanmıyorum - onu bir metin dosyasında okuyan bir uygulamada kullanıyorum ve Jinja'nın sahne arkasında işlem yapması, yani Python kodunu değiştiremiyorum. – ccbunney

+6

@KernowBunney Bu durumda, ya 2 döngüler - ya da "GRP1 | listesindeki M için% + liste + GRP2 | liste%}" çalışır ... –

+1

Splendid! Bu bir tedavi çalışması - teşekkürler! – ccbunney