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
相关产品推荐
相关产品推荐

