使用Python3和jinja2从嵌套的Json响应获取信息
我正在通过一些JSON和python来寻找关于itering的帮助 目前我有一个函数,它指向一个URL,这是一个JSON API,获取JSON并将结果呈现为results.html。在results.html中,我使用jinja2和for循环来获取一些信息。我可以从_id和文本中获取信息,但是我想做的是从用户部分获取信息(参见下面的JSON示例) 结果.py使用Python3和jinja2从嵌套的Json响应获取信息,python,jinja2,Python,Jinja2,我正在通过一些JSON和python来寻找关于itering的帮助 目前我有一个函数,它指向一个URL,这是一个JSON API,获取JSON并将结果呈现为results.html。在results.html中,我使用jinja2和for循环来获取一些信息。我可以从_id和文本中获取信息,但是我想做的是从用户部分获取信息(参见下面的JSON示例) 结果.py @app.route("/results/") def results(): catfactsURl = "
@app.route("/results/")
def results():
catfactsURl = "https://cat-fact.herokuapp.com/facts/"
webUrl = urllib.request.urlopen(catfactsURl)
if(webUrl.getcode() == 200):
data = json.loads(webUrl.read())
return render_template("results.html", data=data['all'], title="Results")
else:
print("Received error, cannot parse results")
Results.html
{% extends 'layout.html' %}
{% block title %}{{title}}{% endblock %}
{% block content %}
<div>
{% for datas in data %}
<span>{{ datas['_id'] }}</span>
<p>{{ datas['text'] }} </p>
<p>{{ datas['user'] }}</p>
{% endfor %}
</div>
该数据源在其中一个条目(58e008450aac31001185ecfd)中缺少“用户”键。首先通过检查用户密钥的存在来绕过它
<div>
{% for datas in data %}
<span>{{ datas['_id'] }}</span>
<p>{{ datas['text'] }} </p>
{% if 'user' in datas.keys() %}
<p>{{ datas['user']['name']['first'] }} {{ datas['user']['name']['last'] }}</p>
{% endif %}
{% endfor %}
</div>
{%用于数据%中的数据}
{{datas['''u id']}
{{datas['text']}
{%if'user'在datas.keys()中%}
{{datas['user']['name']['first']}{{datas['user']['name']['last']}
{%endif%}
{%endfor%}
HI@FLSte,不幸的是,这不起作用,因为我在尝试指定信息时遇到了以下错误(即{datas['user']['name']['first']}{{datas['user']['name']['last']}):jinja2.exceptions.undeinderror:'dict object'没有属性'user',我查看了数据源。1条记录缺少“用户”属性。更新的答案。谢谢@FLSte这对我有用。刚开始学这东西,真的帮了我大忙。
<div>
{% for datas in data %}
<span>{{ datas['_id'] }}</span>
<p>{{ datas['text'] }} </p>
{% if 'user' in datas.keys() %}
<p>{{ datas['user']['name']['first'] }} {{ datas['user']['name']['last'] }}</p>
{% endif %}
{% endfor %}
</div>