2012-02-08 302 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

相关问题