Jinja2 呈现空 HTML 元素

Jinja2 renders empty HTML elements

我使用以下 Jinja2 代码将变量从 Python 3 中的列表呈现为 HTML select 形式:

<select name="update_id" id="update_id">
    {% for id in ids %}
    <option value="{{ ids[id] }}">{{ ids[id] }}</option>
    {% endfor %}
</select>

结果 HTML 是:

<select name="delete_id" id="delete_id">                
    <option value="2">2</option>  
    <option value="11">11</option>
    <option value=""></option>
    <option value=""></option>
    <option value=""></option>
</select>

我希望 select 表单将列表中的每个 ID 作为选项包含在内。我使用的列表是这样的:

ids = [1, 2, 11, 12, 13]

列表中的所有项目都是整型对象。我让 Jinja2 使用 if 语句将整个列表呈现到页面中,所以问题只发生在 for 循环中。

1 这是使用 if 语句(蓝色列表)呈现的列表和使用 for 循环(橙色数字)呈现的项目的屏幕截图。橙色数字与 select 形式呈现的完全相同。

你的代码有问题 <option value="{{ ids[id] }}">{{ ids[id] }}</option> ,它开始从列表中获取元素,如 ids[1],ids[2],ids[11],ids[12],ids[13]。您指的是索引号 ids[1] 表示 ids 列表中的 第二个元素 ,在您的例子中是 2。替换此 <option value="{{ id }}">{{ id }}</option>。或者,如果您希望值在一个范围内,那么您应该尝试使用 tmplist=range(0,len(ids)) 并使用 {% for id in tmplist %}

<option value="{{ ids[id] }}">{{ ids[id] }}</option>