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>
我使用以下 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>