私はただJinja2を学んでいます。テンプレートを作成したことがないので、今はドキュメントが非常にわかりにくいと感じています。
単純な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')
テーブルを生成できないようです。また、これがテーブルに複数のフィールドを設定する最良の方法であるかどうかもわかりません。
items
をtemplate.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)
そして、あなたのJinjaコードはわずかに変わります:
<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>