长时间敲击键盘后,我可能会感到疲倦,但目前无法继续前进。 这是代码:
elif request.form["submit"] == "blah":
cursor.execute('''SELECT * FROM "Table_x"''')
results = cursor.fetchall()
for record in cursor:
results.append(record)
return "Showing all:" + str(results) + render_template("index.html")
基于上述内容,渲染模板上的输出给了我一个讨厌的元组列表。
[(1, 'Dummy1', 'dummy1', 1), (2, 'Dummy2', 'dummy2', 2), (3, 'Dummy3', 'dummy3', 3)]
如何更改return或result变量(或两者),以使列表中的每个元组都打印在单独的行中?
答案 0 :(得分:0)
问题是如何使用文档中的render_template将数据传递到模板:
从具有给定上下文的template文件夹中渲染模板。
参数:template_name_or_list –要使用的模板的名称 渲染的,或使用模板名称迭代的第一个现有模板 将呈现上下文–应在以下位置使用的变量 模板的上下文。
context
只不过是您要作为关键字参数传递的变量。遵循一个示例,首先是python文件app.py
:
#!/usr/bin/python3
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/tuple")
def jpg_to_pdf():
results = [(1, 'Dummy1', 'dummy1', 1), (2, 'Dummy2', 'dummy2', 2), (3, 'Dummy3', 'dummy3', 3)]
return render_template('index.html', data=results)
和Jinja模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Tuple</title>
</head>
<body>
<table style="width: 100%">
{% for element in data %}
<tr>
<th>{{ element[0] }}</th>
<th>{{ element[1] }}</th>
<th>{{ element[2] }}</th>
<th>{{ element[3] }}</th>
</tr>
{% endfor %}
</table>
</body>
</html>
这些文件合并呈现以下html
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Tuple</title>
</head>
<body>
<table style="width: 100%">
<tr>
<th>1</th>
<th>Dummy1</th>
<th>dummy1</th>
<th>1</th>
</tr>
<tr>
<th>2</th>
<th>Dummy2</th>
<th>dummy2</th>
<th>2</th>
</tr>
<tr>
<th>3</th>
<th>Dummy3</th>
<th>dummy3</th>
<th>3</th>
</tr>
</table>
</body>
</html>
您可以找到有关渲染模板here的更多信息。