2012-02-08 51 views
24

我只是在學習Jinja2。我之前從未做過任何模板,所以我現在發現文檔非常混亂。如何在Jinja2中建立一個簡單的for循環的HTML表格?

我該如何做一個簡單的FOR循環的HTML表格?我的模板看起來是這樣的:

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

我的Python代碼如下所示:

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

我似乎無法產生任何表。我也不知道這是用幾個字段填充表格的最佳方式。

回答

47

只需通過itemstemplate.render作爲關鍵字參數 - 它應該是一個列表(實際上是任何可迭代操作)的項目。如果你需要使用子類或類字典。在最簡單的情況下,可以使用字典:

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) 

然後你神社的代碼會略有變化:

<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

太棒了!謝謝肖恩,你過得更安全!長久以來一直苦苦掙扎,沒有取得進展:-) – NomadAlien 2012-02-09 08:50:12