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

Flask基于Python列表生成下拉列表无选项如何解决?

问题错误原因及修复方案

核心错误点

  • 同一路由/的GET请求绑定了两个视图函数,Flask路由匹配遵循先定义优先规则,请求会命中第一个main_page函数,该函数没有给模板传递pools变量,模板中pools为空值,自然遍历不出任何选项。
  • HTML语法错误:method和action是<form>标签的专属属性,不应该写在<select>标签上,虽然该错误不直接导致无选项,但会影响后续表单提交逻辑。
  • 冗余代码问题:所有<option>都加了SELECTED属性,会导致默认永远选中最后一个选项;</option>后多余的双引号也属于无效冗余代码。

修复代码

服务端代码修正

直接合并重复的路由定义即可:

from flask import Flask, render_template
from data_harvester import api_requests
app = Flask(__name__)

@app.route('/', methods=['GET'])
def dropdown():
    pools = ['test1', 'test2']
    return render_template('index.html', pools=pools)

if __name__ == '__main__':
   app.run(debug=True)

如果需要保留原来的函数命名,删掉第二个路由定义,把pools参数放到第一个main_page函数返回中也可正常运行。

前端模板代码修正

<div>
  <select name="pools">
    {% for pool in pools %}
    <option value="{{pool}}">{{pool}}</option>
    {% endfor %}
  </select>
</div>

如果需要设置默认选中第一个选项,可以在option标签内添加判断{% if loop.first %} selected{% endif %}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:06:00