在 Jinja 模板中呈现来自 DynamoDB 的数据
Render data from DynamoDB in Jinja template
我有一个 Flask 路由,它使用 boto3 验证并连接到 AWS DynamoDB,并通过扫描提取整个 table,将结果返回为 JSON。我想将结果呈现为 HTML,但是将 JSON 传递给 render_template
不起作用,我收到 500 内部服务器错误。如何呈现数据?
@app.route("/x/")
def x():
#Authentication and connection omitted
table = dynamodb.Table(table_name)
response = table.scan()
js = json.dump(response)
#return js
return render_template('test.html', data=js)
<ul>
{% for item in data %}
<li>{{ item.Make}}</li>
<li>{{ item.Model}}</li>
<li>{{ item.Year}}</li>
{% endfor %}
</ul>
我想输出这样的数据:
Honda
Civic
2013
Toyota
Camry
1999
JSON数据:
{
"Count": 2,
"Items": [
{
"Make": "Honda",
"Model": "Civic",
"Year": "2013"
},
{
"Make": "Toyota",
"Model": "Camry",
"Year": "1999"
}
],
"ResponseMetadata": {
"HTTPStatusCode": 200,
"RequestId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
"ScannedCount": 2
}
如果您要在 HTML 中呈现数据,请不要将其转储到 JSON 字符串。您拥有的数据是一本字典,在这种情况下迭代它没有意义。您想要迭代该字典中 items
的值。
@app.route("/")
def index():
...
response = table.scan()
return render_template('index.html', data=data)
<table>
<thead><tr><th>Make</th><th>Model></th><th>Year</th></tr></thead>
<tbody>{% for item in data['items'] %}<tr>
<td>{% item['Make'] %}</td>
<td>{% item['Model'] %}</td>
<td>{% item['Year'] %}</td>
</tr>{% endfor %}</tbody>
</table>
我有一个 Flask 路由,它使用 boto3 验证并连接到 AWS DynamoDB,并通过扫描提取整个 table,将结果返回为 JSON。我想将结果呈现为 HTML,但是将 JSON 传递给 render_template
不起作用,我收到 500 内部服务器错误。如何呈现数据?
@app.route("/x/")
def x():
#Authentication and connection omitted
table = dynamodb.Table(table_name)
response = table.scan()
js = json.dump(response)
#return js
return render_template('test.html', data=js)
<ul>
{% for item in data %}
<li>{{ item.Make}}</li>
<li>{{ item.Model}}</li>
<li>{{ item.Year}}</li>
{% endfor %}
</ul>
我想输出这样的数据:
Honda
Civic
2013
Toyota
Camry
1999
JSON数据:
{
"Count": 2,
"Items": [
{
"Make": "Honda",
"Model": "Civic",
"Year": "2013"
},
{
"Make": "Toyota",
"Model": "Camry",
"Year": "1999"
}
],
"ResponseMetadata": {
"HTTPStatusCode": 200,
"RequestId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
"ScannedCount": 2
}
如果您要在 HTML 中呈现数据,请不要将其转储到 JSON 字符串。您拥有的数据是一本字典,在这种情况下迭代它没有意义。您想要迭代该字典中 items
的值。
@app.route("/")
def index():
...
response = table.scan()
return render_template('index.html', data=data)
<table>
<thead><tr><th>Make</th><th>Model></th><th>Year</th></tr></thead>
<tbody>{% for item in data['items'] %}<tr>
<td>{% item['Make'] %}</td>
<td>{% item['Model'] %}</td>
<td>{% item['Year'] %}</td>
</tr>{% endfor %}</tbody>
</table>