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

Jinja模板变量格式化异常:现金值输出不符合预期

解决Jinja模板中现金值显示为字典列表的问题

问题根源

你的db.execute执行查询后返回的是结果列表——哪怕只匹配到一条用户记录,结果也是包含单个字典的列表,所以直接渲染{{cash}}就会输出[{'cash': 50000}]这种格式。

解决方案

方法1:在Python代码中提前提取数值

修改Python里的cash赋值逻辑,直接取出列表第一个元素的cash键对应值:

user_id = session["user_id"]
stocks = db.execute("SELECT * FROM  current_holdings")
# 取查询结果的第一条记录,提取cash值
cash = db.execute("SELECT cash FROM  users WHERE id = ?", user_id)[0]['cash']
return render_template("portfolio.html", stocks=stocks, cash=cash)

这样传入模板的cash就是纯数值50000,直接用{{cash}}就能正常显示。

方法2:在Jinja模板中直接处理列表

如果不想修改Python代码,在模板里通过索引或过滤器取出对应值:

<tr>
    <td colspan="4"></td>
    <td colspan="4"></td>
    <td colspan="4"></td>
    <td id="cash">Cash</td>
    <!-- 方式1:通过索引取值 -->
    <td>{{cash[0]['cash']}}</td>
    <!-- 方式2:用Jinja的first过滤器 -->
    <!-- <td>{{cash.first().cash}}</td> -->
</tr>

补充说明

你提到同一文件中for循环能正常输出,是因为for循环会自动遍历列表里的每个字典元素;而cash这里是单条记录的列表,所以需要明确指定取第一个元素的对应字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:15:54