我正在关注这个 https://youtu.be/g5BfdCgrc8k?t=236 并且一切正常。 SQL 查询的输出保存在一个变量中,我可以在另一个 .html 页面中调用该变量。
所以我的 sql 查询是:
@app.route('/all_data')
def all_data():
customers = db.get_customers()
for customer in customers:
var = customers
return render_template('all_data.html',var=var)
在 all_data.html 页面中调用此 {{var}} 时,输出是一个长元组:
('name','email','comment','gender'),('name','email','comment','gender') etc etc
我希望将这个 {{var}} 放入 table 中?.. 但我在寻找如何做到这一点时遇到了障碍?
任何帮助将非常感激!
回答1
假设您使用的是 Flask 的默认模板引擎 (Jinja2),您可以简单地使用 for 循环来迭代模板内的集合元素。语法是:
{% for item in items %}
{{ item }}
{% endfor %}
因此,只需创建一个 HTML table,并为 var
变量中的每个项目添加一行。 IIRC,Jinja 元组的行为与 Python 的相同,因此您可能可以执行以下操作:
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Comment</th>
<th>Gender</th>
</tr>
</thead>
<tbody>
{% for current in var %}
<tr>
<td>{{ current[0] }}</td>
<td>{{ current[1] }}</td>
<td>{{ current[2] }}</td>
<td>{{ current[3] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
我没有检查它(因为我现在没有可用的 Flask 项目),但如果我没记错的话,我会这样做
https://jinja.palletsprojects.com/en/3.0.x/templates/
另外,这段代码是干什么用的?
for customer in customers: var = customers
您正在迭代列表的每个元素,但您从不使用 customer
变量(包含当前元素)。相反,您将 var
变量分配给 customers
列表多次。假设 customers
是一个简单的 Python 列表,您可以删除此循环并简单地执行 return render_template('all_data.html',var=customers)