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

Flask中render_template传参后无法通过属性名访问变量如何解决

问题核心原因

你调用db.execute执行查询时,返回的结果是包含字典的列表,哪怕查询结果只有1条数据,也会被包裹在长度为1的数组里。你输出{{ data }}看到的[{'company': 'hej', ...}]开头的中括号就是列表的标识,列表本身没有password、type这类属性,所以直接写{{ data.password }}拿不到任何值。

解决方案

1. 调整后端代码

因为你是按u_id和company唯一匹配查询,返回结果最多1条,直接取列表的第一个元素即可:

else:
    data = db.execute("SELECT * FROM pswds WHERE u_id = ? AND company = ?",
                    session["user_id"], request.form.get("comp_select"))
    # 新增这行,取列表中的第一条数据
    data = data[0]
    return render_template("details.html", data=data)

如果要兼容查询无结果的情况,可以加个判断:data = data[0] if data else {},避免索引报错。

2. 调整模板取值

后端改完后,模板里直接按属性取值即可,修改后的表格部分代码如下:

<tbody>
    <tr>
      <td headers="entry">Company:</td>
      <td headers="detail">{{ data.company }}</td>
    </tr>
    <tr>
      <td headers="entry">Website:</td>
      <td headers="detail">{{ data.website }}</td>
    </tr>
    <tr>
      <td headers="entry">Type:</td>
      <td headers="detail">{{ data.type }}</td>
    </tr><tr>
      <td headers="entry">Password:</td>
      <td headers="detail">{{ data.password }}</td>
    </tr>
</tbody>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:03