Flask - 通过嵌套 for 循环制作 HTML table 超链接?

Flask - Making HTML table of hyperlinks via nested for-loops?

我正在设计一个使用 MySQL 数据库的 Flask 应用程序。

我有下面这个 Flask 代码:

@app.route("/test")
def test():
cursor.execute("SELECT * from testtable;")
data = cursor.fetchall()
return render_template('test.html', data = data)

我希望从这些数据中得到一个 HTML table,并且我希望这个 table 的第一列是超级 linked。我目前的test.html如下图:

<table border="1" cellpadding="5" cellspacing="5">
{% for row in data %}
<tr>
{% for d in row %}  
    <td><a href="/testresult?query={{ d }}">{{ d }}</a></td>
{% endfor %}
</tr>
{% endfor %}
</table>

这个 HTML 从 table 的每一列的每个单元格中生成一个超 link。有没有办法只让第一列中的单元格被超linked,而让所有其他单元格只显示{{d}}?

Flask 中的默认模板引擎是 jinja2。

在 jinja2 中,您可以检查循环索引,这意味着您可以执行以下操作。

{% for d in row %}
  {% if loop.index == 1 %} # You can also use loop.index0 for 0-based indexing
    <td><a href="/testresult?query={{ d }}">{{ d }}</a></td>
  {% else %}
    <td>{{ d }}</td>
  {% endif %}
{% endfor %}

您还可以使用以下语法跳过行列表中的第一个元素:

{% for d in row[1:] %}

在您的 table 中,将 for 循环放在 tr 元素之外。

<table border="1" cellpadding="5" cellspacing="5">
{% for row in data %}
<tr>
    <td><a href="/testresult?query={{ row.d }}">{{ row.d }}</a></td>
{% endfor %}
</tr>
</table>