如何在Flask模板中解析和渲染json

时间:2014-12-26 14:43:34

标签: python json templates flask

这是我的Flask应用代码:

from flask import render_template, jsonify
import requests
from app.test_blueprint import app


@app.route('/')
def index():

    url = 'http://api.address'
    response = requests.get(url)
    data = response.json()

    return render_template('index.html', data=data)


    if __name__ == '__main__':
        app.run()

来自index.html模板的摘录:

 <div class="title">
 {% for item in data %}
     <span>{{ item.title }}</span>
 {% endfor %}
 </div>

解析url地址以发送已喷洒在屏幕上的HTTP GET请求,然后它会给出。在JSON中创建自定义以显示对象。我通过在模板中插入数据项来获得JSON数据输出,但它不会出现在屏幕上。这有什么不对吗?

1 个答案:

答案 0 :(得分:2)

假设data是JSON对象而不是数组,则响应将被转换为Python字典。迭代字典会返回,而不是值。这意味着您尝试访问字符串上的属性item(并且Python中的字符串没有“item”属性)。有几种方法可以解决这个问题:

{# 1. Use the key to access the value from data #}
{% for key in data %}
  {{ data[key].item }}
{% endfor %}

{# 2. Explicitly enumerate the values #}
{% for value in data.values() %}
  {{ value.item }}
{% endfor %}

{# 3. Enumerate key-value pairs #}
{% for key, value in data.items() %}
  {{ value.item }}
{% endfor %}