将变量传递给烧瓶中的 table

passing variable to a table in flask

我正在关注这个 video 并且一切正常。 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 中?..但我在寻找如何做到这一点时遇到困难?

如有任何帮助,我们将不胜感激!

假设您使用的是 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 项目),但如果我没记错的话,我会这样做

Here's a link to an usefull part of Jinja2's documentation

另外,这段代码是做什么用的?

    for customer in customers:
       var = customers

您正在遍历列表的每个元素,但您从不使用 customer 变量(包含当前元素)。相反,您多次将 var 变量分配给 customers 列表。假设 customers 是一个简单的 Python 列表,您可以删除此循环并简单地执行 return render_template('all_data.html',var=customers)