You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Flask表格单元格的id值传递给后端Python函数?

实现方法

你当前的代码缺少两个核心逻辑:一是点击事件没有传递当前行的id参数,二是没有前端跳转逻辑把id传给后端路由,下面提供两种可直接复用的实现方案:

方案1:直接用链接跳转(无需额外JS,最简便)

直接把id单元格用a标签包裹,通过Flask模板自带的url_for方法生成对应详情页的访问地址,自动携带id参数:

<tbody>
   {% for record in records %}
   <tr>
      <td>
        <a href="{{ url_for('search_results', id=record.id) }}">{{ record.id }}</a>
      </td>
      <td>{{ record.contractor }}</td>
      <td>{{ record.category }}</td>
      <td><a href='tel:{{ record.phone }}'>{{ record.phone }}</a></td>
   </tr>
   {% endfor %}
</tbody>

点击id后会自动跳转到/detail/对应id的路径,后端路由可以直接拿到id参数。

方案2:保留onclick触发逻辑的实现

如果需要保留点击单元格触发函数的逻辑,需要补全JS跳转逻辑和参数传递:

  1. 首先在模板中新增JS函数处理跳转:
<script>
function search_results(targetId) {
  // 拼接路径跳转到详情页
  window.location.href = `/detail/${targetId}`;
}
</script>
  1. 修改表格的点击事件,传入当前行的id:
<tbody>
   {% for record in records %}
   <tr>
      <td onclick="search_results({{ record.id }})">{{ record.id }}</td>
      <td>{{ record.contractor }}</td>
      <td>{{ record.category }}</td>
      <td><a href='tel:{{ record.phone }}'>{{ record.phone }}</a></td>
   </tr>
   {% endfor %}
</tbody>

后端代码优化建议

你当前的查询返回的是查询集,单个id对应唯一记录的话可以用first()直接取对象,减少模板遍历的逻辑:

@app.route('/detail/<id>')
def search_results(id):
    record = db.session.query(Feedback).filter(Feedback.id == id).first()
    return render_template('pageDetail.html', record=record)

内容的提问来源于stack exchange,提问作者Rob Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:45:03