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

Flask搭配Jinja2模板如何获取下拉框选中值并展示对应水果价格

实现方案

问题本质

Jinja2是服务端渲染模板,仅在页面首次加载时执行一次渲染,用户在浏览器中操作下拉框的行为属于前端交互,必须通过少量JS实现动态更新,无需使用复杂的Ajax或jQuery。

你之前代码的错误点:

  • 展示价格的<p>标签未添加id="fruit-binding",JS无法定位到要更新的元素
  • 未将后端传入的fruits字典转换为前端JS可识别的对象,JS读取不到对应的水果价格数据
  • 未给下拉框绑定选中变化事件,选中后不会触发更新逻辑,同时JS函数未补全闭合

完整可运行模板代码

<form>
<select name="fruit" id="fruit" onchange="val()">
    {% for fruit in fruits.keys() %}
        <option value="{{ fruit }}"> {{ fruit }} </option>
    {% endfor %}
</select>

<p id="fruit-binding"></p>

</form>

<script>
// 将后端传入的水果字典转换为前端JS可识别的对象
const fruits = {{ fruits|tojson }};
const selectTag = document.getElementById('fruit');
const pTag = document.getElementById('fruit-binding');

function val() {
  pTag.innerText = fruits[selectTag.value];
}

// 页面加载完成后自动触发一次,展示默认选中的水果价格
window.onload = val;
</script>

代码说明

  • 用Jinja2自带的tojson过滤器直接将Python字典转换为JS对象,无需额外处理数据格式
  • 给下拉框添加了onchange="val()"属性,每次选中水果时会自动更新价格显示
  • 页面加载完成后自动触发一次更新逻辑,默认展示第一个选中水果的价格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:02