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

Jinja无法在HTML中显示值问题求助(Python/Jinja新手)

问题解决:Flask+Jinja无法渲染列表值的问题

核心原因

你用pd.read_sql_query获取的emplList是pandas DataFrame对象,不是普通的列表/字典结构。直接在Jinja模板中遍历DataFrame时,默认会遍历列名而非行数据,导致row.employee_name无法取到值,页面显示为空。

两种解决方案

方案一:将DataFrame转为字典列表(适配现有模板)

修改后端home函数,把DataFrame转换成每行对应一个字典的列表,这样模板里的遍历逻辑无需改动:

@app.route('/')
def home():
    # 转换为[{"employee_name": "John"}, {"employee_name": "Sunny"}, ...]格式
    employees = emplList.to_dict('records')
    return render_template('app.html', employees=employees)

方案二:直接传递列值列表(简化模板逻辑)

如果只需要employee_name的取值,可以直接提取列数据转为列表,再修改模板遍历方式:
后端代码:

@app.route('/')
def home():
    # 提取employee_name列的所有值,转为普通列表
    employees = emplList['employee_name'].tolist()
    return render_template('app.html', employees=employees)

模板代码修改为:

<select id="multipleSelect" multiple name="native-select" placeholder="Native Select" data-search="true" data-silent-initial-value-set="true">
      {% for name in employees%}
         <option value="{{ name }}">{{ name }}</option>
      {% endfor %}
</select>

额外提示

注意数据库连接conn使用后要及时关闭,避免资源泄漏,可以用with语句或者显式调用conn.close()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:02:07