Comment construire une table HTML avec une simple boucle for dans Jinja2?
J'apprends juste Jinja2. Je n'ai jamais fait de modèle auparavant, donc je trouve la documentation très confuse en ce moment.
Comment puis-je construire une table HTML avec une simple boucle FOR? Mon modèle ressemble à ceci:
{% 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 %}
Mon code python ressemble à ceci:
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')
Je n'arrive pas à générer de tables. Je ne sais pas non plus si c'est la meilleure façon de remplir une table avec plusieurs champs.
27
demandé sur
Daniel Beck
2012-02-08 21:25:12
1 réponses
Il suffit de passer items
à template.render
comme argument de mot-clé-ce devrait être une liste (vraiment tout itérable fera) d'éléments. Si vous avez besoin de sous-éléments, utilisez une classe ou un dictionnaire. Dans le cas le plus simple, vous pouvez utiliser un dictionnaire:
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)
Et puis votre code Jinja changerait légèrement:
<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>
51
répondu
Sean Vieira
2016-02-17 18:28:34