web-dev-qa-db-fra.com

Dictionnaire Python dans la table HTML

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.

16
just_in

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>
28
codegeek

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>
3
Jroosterman

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
3
Parzival

Parcourez les éléments du dictionnaire en utilisant result.iteritems(), puis écrivez les clés/données dans les lignes d'un tableau html.

1
user334856

Pour python3, no () après result.items

<table>
{% for key, value in result.items %}
   <tr>
        <th> {{ key }} </th>
        <td> {{ value }} </td>
   </tr>
{% endfor %}
</table>
0
Ying Wang
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()]))
0
cclauss