Python Flask Jinja2-解析JSON
我尝试在Jinja2 HTML模板中显示一些JSON结果,但它返回一个空页面,或者返回新行上JSON的每个字符,或者返回带空格的每个字符 我要发送到Jinja2模板的对象如下所示:Python Flask Jinja2-解析JSON,python,json,flask,jinja2,Python,Json,Flask,Jinja2,我尝试在Jinja2 HTML模板中显示一些JSON结果,但它返回一个空页面,或者返回新行上JSON的每个字符,或者返回带空格的每个字符 我要发送到Jinja2模板的对象如下所示: [ { "name": "John", "lastname": "Smith", "age": 22, "likes": [ {"fruits": ["bananas", "oranges"] }, {"
[
{
"name": "John",
"lastname": "Smith",
"age": 22,
"likes": [
{"fruits":
["bananas", "oranges"]
},
{"sweets":
["chocolate"]
}
]
}
]
要将JSON对象发送到Jinja2模板,我使用:
render_template("report.html", items=items)
在Jinja2模板HTML上,如果我使用{{items}
,它会将整个对象显示为文本。
如果我试图获取{{items['name']}}
它将不会在页面上显示任何内容,页面将完全为空
我也试过了
{% for x in items %}
{{ x }}
{% endfor %}
它只显示相同的“文本”,但有间距:
在HTML文件中,我尝试执行以下操作:
<div id="name">{{ items['name'] }}</div>
{{items['name']}
如何显示我要传递给Jinja2的JSON对象中的对象?嘿,因此您拥有的JSON是一个数组而不是一个对象,因此您必须考虑到这一点,首先访问您想要的对象,然后访问属性
<div id="name">{{ items[0]['name'] }}</div>
嘿,所以你拥有的json是一个数组而不是一个对象,所以你必须考虑到这一点,首先访问你想要的对象,然后访问属性
<div id="name">{{ items[0]['name'] }}</div>
我想我已经结束了
我必须先转储对象,然后加载新对象
r = json.dumps(json_onject)
loaded_r = json.loads(r)
return render_template("report.html", items=loaded_r)
现在我可以使用JSON对象中的任何值。我想我到此为止了
我必须先转储对象,然后加载新对象
r = json.dumps(json_onject)
loaded_r = json.loads(r)
return render_template("report.html", items=loaded_r)
现在,我可以使用JSON对象中的任何值。我有一个稍微修改过的示例,它对我非常有用:
app.py:
link_chart_data = {
"type":
"LinkChart",
"items": [{
"type": "node",
"id": "ac1",
"u": "static/icons/bank.png",
"t": "45081063"
}]
}
@app.route('/link_chart')
def covid():
return render_template("link_chart/index.html", flask_data=link_chart_data)
然后在templates/link_chart/index.html中:
<script>
const parsedData = JSON.parse('{{ flask_data|tojson }}');
const unparsedData = '{{ flask_data }}'
console.log('parsed', parsedData)
console.log('unparsed', unparsedData)
</script>
^^这就是我想要的。一个新的JSON对象
以及:
^^我真的不想要
|tojson
jinja模板是一个变量,因此它以与python(flask)相同的格式进行传递。JSON.parse()
javascript函数将它从字符串转换为javascript中的JSON对象
我希望这能有所帮助。我有一个稍微修改过的例子,对我来说非常有效:
app.py:
link_chart_data = {
"type":
"LinkChart",
"items": [{
"type": "node",
"id": "ac1",
"u": "static/icons/bank.png",
"t": "45081063"
}]
}
@app.route('/link_chart')
def covid():
return render_template("link_chart/index.html", flask_data=link_chart_data)
然后在templates/link_chart/index.html中:
<script>
const parsedData = JSON.parse('{{ flask_data|tojson }}');
const unparsedData = '{{ flask_data }}'
console.log('parsed', parsedData)
console.log('unparsed', unparsedData)
</script>
^^这就是我想要的。一个新的JSON对象
以及:
^^我真的不想要
|tojson
jinja模板是一个变量,因此它以与python(flask)相同的格式进行传递。JSON.parse()
javascript函数将它从字符串转换为javascript中的JSON对象
我希望这能有所帮助。我尝试在Python中使用JSON.dumps进行JSON解析,但没有成功。
但是,重命名了HTML文件
Of:index.html
发件人:index.html.jinja
并在Python应用程序中重命名
示例:return render\u模板('index.html.jinja',products=products)
成功了!!我尝试在Python中使用JSON.dumps进行JSON解析,但没有成功。
但是,重命名了HTML文件
Of:index.html
发件人:index.html.jinja
并在Python应用程序中重命名
示例:return render\u模板('index.html.jinja',products=products)
它起作用了!!当你说JSON…你是说python对象?Jinja2将python对象渲染到templates.dictionary,是的…当你说JSON…你是指python对象?Jinja2将python对象渲染到templates.dictionary,是的…谢谢你的回答..但是,如果我制作一个对象`items=dict()items['name']=“John”返回render_模板(“report.html”,items=items)`并尝试打印items['name']它仍然返回一个空页面。感谢您的回复..但是,如果我正在制作一个对象`items=dict()items['name']=“John”返回render_模板(“report.html”,items=items)`并尝试打印items['name']它仍然返回一个空页。谢谢@Sharpie,它像一个咒语一样工作=)谢谢@Sharpie,它像一个咒语一样工作=)