2012-02-08 18 views
24

Po prostu uczę się Jinja2. Nigdy wcześniej nie robiłem szablonów, dlatego uważam, że dokumentacja jest teraz bardzo myląca.Jak zbudować tabelę HTML z prostą pętlą for w Jinja2?

Jak mogę zbudować tabelę HTML za pomocą prostej pętli FOR? Mój szablon wygląda tak:

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

mój kod Pythona wygląda następująco:

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') 

I nie wydaje się generować żadnych tabel. Nie wiem też, czy jest to najlepszy sposób wypełnienia tabeli kilkoma polami.

Odpowiedz

47

Po prostu podaj jako argument słowa kluczowego items do template.render - powinna to być lista rzeczy (naprawdę dowolna). Jeśli potrzebujesz podpozycji, użyj klasy lub słownika. W najprostszym przypadku można użyć słownika:

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) 

A potem kod Jinja będzie nieco zmienić:

<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

fantastyczne! Dzięki Sean, jesteś bezpieczniejszy! Zmagałem się z tym zbyt długo i nie robiłem postępu :-) – NomadAlien

Powiązane problemy