Est-il possible d'imprimer le dictionnaire python dans une table en HTML? J'ai un dictionnaire python et j'envoie au format HTML en utilisant
return render_template('index.html',result=result)
Maintenant, je dois imprimer les éléments du dictionnaire de résultats en HTML sous forme de tableau.
Flask utilise Jinja comme cadre de modélisation. Vous pouvez simplement faire ce qui suit dans votre modèle (html)
<table>
{% for key, value in result.iteritems() %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
</table>
J'ai eu plus de chance de placer le dictionnaire dans une liste de listes, puis de faire en sorte que le HTML passe en boucle dans la liste et imprime le tableau . Le python serait:
Table = []
for key, value in results_dict.iteritems():
temp = []
temp.extend([key,value]) #Note that this will change depending on the structure of your dictionary
Table.append(temp)
Ensuite, dans votre code html, vous parcourez la table.
<table>
{% for t in table %}
<tr>
{% for i in t %}
<td>{{ i }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
Vérifiez Flask-Table .
Exemple tiré de la documentation (légèrement modifiée):
from flask_table import Table, Col
# Declare your table
class ItemTable(Table):
name = Col('Name')
description = Col('Description')
items = [dict(name='Name1', description='Description1'),
dict(name='Name2', description='Description2'),
dict(name='Name3', description='Description3')]
# Populate the table
table = ItemTable(items)
# Print the html
print(table.__html__())
# or just {{ table }} from within a Jinja template
Parcourez les éléments du dictionnaire en utilisant result.iteritems()
, puis écrivez les clés/données dans les lignes d'un tableau html.
Pour python3, no () après result.items
<table>
{% for key, value in result.items %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
</table>
tbl_fmt = '''
<table> {}
</table>'''
row_fmt = '''
<tr>
<td>{}</td>
<td>{}</td>
</tr>'''
def dict_to_html_table(in_dict):
return tbl_fmt.format(''.join([row_fmt.format(k,v) for k,v in in_dict.iteritems()]))