sql - 将变量传递给 flask 中的 table

我正在关注这个 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)

相似文章

随机推荐

最新文章