这是我的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数据输出,但它不会出现在屏幕上。这有什么不对吗?
答案 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 %}