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

Flask渲染SQLite3数据时仅生成空P标签问题求助

问题解决:Flask渲染SQLite数据为空标签的原因及修复

问题根源

SQLite默认的cursor.fetchall()返回的是元组列表,每个行数据是形如(id值, feedback内容)的元组,而非字典。你在模板中用post['feedback']或post.feedback尝试通过键名访问,自然取不到值,所以生成空标签;直接输出post能看到整行元组内容,也验证了这一点。

两种修复方案

方案1:直接通过索引访问元组元素

因为你的表结构是id在前、feedback在后,每个元组的第2个元素(索引为1,Python从0开始计数)就是反馈内容,修改前端模板代码即可:

{% for post in posts %}
    <div class='post'>
        <p>{{ post[1] }}</p>
    </div>
{% endfor %}

方案2:让查询返回字典格式的数据

修改你的listFeedback函数,让SQLite返回支持键名访问的Row对象,这样就能保留模板中post['feedback']的写法:

def listFeedback():
    con = sql.connect("databaseFiles/database.db")
    # 设置行工厂为Row对象,支持键名访问
    con.row_factory = sql.Row
    cur = con.cursor()
    data = cur.execute('SELECT * FROM feedback').fetchall()
    con.close()
    # 可选:转成普通字典列表(如果需要)
    # data = [dict(row) for row in data]
    return data

修改后模板中的{{ post['feedback'] }}或{{ post.feedback }}就能正常显示内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:23:12