2012-02-08 14 views
24

Sadece Jinja2 öğreniyorum. Daha önce hiç şablonlama yapmadım bu yüzden belgeleri şu an çok kafa karıştırıcı buluyorum.Jinja2'de basit bir döngü ile bir HTML tablosu nasıl oluşturulur?

Basit bir FOR döngüsü ile bir HTML tablosu nasıl oluştururum? Benim şablon şuna benzer:

{% for item in items %} 
<TR> 
    <TD class="c1"><IMG src="favicon.ico"></TD> 
    <TD class="c2">{{date}}</TD> 
    <TD class="c3">{{id}}</TD> 
    <TD class="c4"><SPAN>{{position}}</SPAN></TD> 
    <TD class="c5"><SPAN>{{status}}</SPAN></TD> 
</TR> 
{% endfor %} 

Benim piton kodu şöyle:

import jinja2 
loader = jinja2.FileSystemLoader('./index.html') 
env = jinja2.Environment(loader=loader) 
template = env.get_template('') 
print template.render(date='2012-02-8', id='123', position='here', status='Waiting') 

herhangi tablolar oluşturmak için görünmüyor olabilir. Bunun bir tabloyu çeşitli alanlarla doldurmanın en iyi yolu olup olmadığını da bilmiyorum.

cevap

47

template.render - template.render için bir anahtar kelime argüman olarak - öğeleri bir liste (gerçekten herhangi bir yinelenen yapacak) olmalıdır. Alt öğelere ihtiyacınız varsa, bir sınıf veya sözlük kullanın.

items = [] 
for i in range(1, 11): 
    i = str(i) 

    # dict == {} 
    # you just don't have to quote the keys 
    an_item = dict(date="2012-02-" + i, id=i, position="here", status="waiting") 
    items.append(an_item) 

# ... your code here ... 

template.render(items=items) 

Ve sonra Jinja kodu hafifçe değiştirecek:

<table> 
{% for item in items %} 
<TR> 
    <TD class="c1"><IMG src="favicon.ico"></TD> 
    <TD class="c2">{{item.date}}</TD> 
    <TD class="c3">{{item.id}}</TD> 
    <TD class="c4"><SPAN>{{item.position}}</SPAN></TD> 
    <TD class="c5"><SPAN>{{item.status}}</SPAN></TD> 
</TR> 
{% endfor %} 
</table> 
+0

Fantastik basit durumda, bir sözlük kullanabilirsiniz! Teşekkürler Sean, daha güvenli bir hayatsın! Şimdilik bunun için çok uzun zamandır mücadele ediyor ve ilerleme kaydedemiyordum :-) – NomadAlien

İlgili konular