Jinja2 - 如何循环json列表?

问题描述 投票:6回答:2

如何使用jinja2循环json列表?

我有这个json列表,

[{“first_name”:“John”,“last_name”:“Smith”,“user_id”:4,“address”:null},{“first_name”:“Jane”,“last_name”:“Heart”,“user_id “:5,”address“:null},{”first_name“:”Dom“,”last_name“:”Robinsons“,”user_id“:6,”address“:null},{”first_name“:”Pete“, “last_name”:“手”,“user_id”:7,“地址”:null}]

page.html中,

<table>
   {% for user in users %}
   <tr><td>{{ user.first_name }}</td></tr>
   {% endfor %}
</table>

结果,

<table>

   <tr><td></td></tr>

   <tr><td></td></tr>

   <tr><td></td></tr>

   <tr><td></td></tr>
   ...

有任何想法吗?

json python-2.7 jinja2
2个回答
7
投票

你的json列表包含字典;你需要以不同于类成员的方式访问字典元素;尝试:

<tr><td>{{ user['first_name'] }}</td></tr>

这对我有用(python 3.4和python 2.7)

import json
from jinja2 import Template

json_str = '''[{"first_name": "John", "last_name": "Smith", "user_id": 4, 
    "address": null}, {"first_name": "Jane", "last_name": "Heart",
    "user_id": 5, "address": null}, {"first_name": "Dom",
    "last_name": "Robinsons", "user_id": 6, "address": null},
    {"first_name": "Pete", "last_name": "Hand", "user_id": 7,
    "address": null}]'''

users = json.loads(json_str)

tmpl = Template('''
<table>
   {% for user in users %}
   <tr><td>{{ user['first_name'] }}</td></tr>
   {% endfor %}
</table>
''')

print(tmpl.render(users = users))

输出:

<table>

   <tr><td>John</td></tr>

   <tr><td>Jane</td></tr>

   <tr><td>Dom</td></tr>

   <tr><td>Pete</td></tr>

</table>

0
投票

jinja2中的简单json迭代

<table>
   <tr>
       {% for key in users[0] %}
       <th>{{ key }}</th>
       {% endfor %}
   </tr>

   {% for user in users %}
   <tr>
       {% for key in user %}
       <td>{{ user[key] }}</td>
       {% endfor %}
   </tr>
   {% endfor %}
</table>
© www.soinside.com 2019 - 2024. All rights reserved.