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

Flask/Jinja中如何显示已选中的下拉选项?

解决Flask更新页面下拉框默认选中问题

修改模板下拉框代码

在循环生成<option>标签时,增加判断逻辑:如果当前dojo的ID和要更新的ninja所属的dojo_id一致,就给该选项添加selected属性,浏览器会自动选中这个选项。

修改后的代码:

<select class="form-select" name="dojo_id">
    {% for dojo in dojos %}
        <option value="{{ dojo.id }}" {% if dojo.id == ninja.dojo_id %}selected{% endif %}>
            {{ dojo.name }}
        </option>
    {% endfor %}
</select>

修复路由中的重定向语法错误

你的更新路由里的重定向代码存在语法问题,f-string中直接写request.form['dojo_id']会被当成字符串字面量,无法正确获取表单值,建议改成:

@app.route('/update/ninja', methods=['POST'])
def update_ninja_form():
    ninja.Ninja.update_one(request.form)
    return redirect(f"/view/dojo/{request.form.get('dojo_id')}")

用request.form.get()还能避免表单中没有dojo_id时抛出KeyError的问题。

原理说明

你已经在路由中把要更新的ninja对象传入了模板,所以可以直接在Jinja2模板中访问ninja.dojo_id属性,通过循环对比每个dojo的ID,给匹配的选项加上selected属性,就能实现默认选中用户创建时的选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:40:23