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

Django如何将查询结果渲染输出为单个下拉选择菜单

问题根源

你的模板中{% for lng_l in long_list %}循环包裹了整个表单、输入控件、datalist容器,循环每执行一次就会生成一套独立的表单+输入框+仅包含单条邮轮标题的datalist,最终就会出现页面有多个输入控件、每个下拉菜单仅含单条数据的异常。
现有models.py和views.py的逻辑无需调整,只需要修改模板文件即可实现需求。

修正方案
  • 将表单、输入框、datalist标签整体移到for循环外部,保证页面只生成1个输入控件和1个datalist容器
  • 仅把<option>标签放在for循环内部,遍历所有邮轮标题生成下拉选项
  • 修正原模板中错误的注释写法(原代码写的<!label属于无效注释,Django模板单行注释推荐使用{# 注释内容 #}格式,避免渲染异常)
修正后的basic.html代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Cruises</title>
  </head>
<body>
<h1> Cruise Control </h1>

<form action="/action_page.php">
  <label for='destination'>Destination</label>
  <input type="text" list="destination" />
  <datalist id="destination">
  {% for lng_l in long_list %}
    <option>{{lng_l.title}}</option>
  {% endfor %}
  </datalist>
  {# 后续日期选择、提交按钮等控件直接在此处添加即可,无需放入循环 #}
  {# <label for="cruisetime">Departure date</label>
  <input type="date" id="cruisetime" name="cruisetime" min={{dep_l.departureDate}}>
  <input type="submit"> #}
</form>
</body>
</html>

修改后页面只会渲染1个输入框,触发下拉时即可展示所有采集到的邮轮标题供用户选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:18:22