【问题标题】:Jinja2 renders empty HTML elementsJinja2 渲染空的 HTML 元素
【发布时间】:2016-05-05 09:25:36
【问题描述】:

我使用以下 Jinja2 代码从 Python 3 的列表中将变量呈现为 HTML 选择表单:

<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>

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

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

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

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

【问题讨论】:

    标签: python html web-applications rendering jinja2


    【解决方案1】:

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

    &lt;option value="{{ ids[id] }}"&gt;{{ ids[id] }}&lt;/option&gt;

    【讨论】:

    • 非常感谢,正是我需要的。
    • 很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2018-08-10
    • 2017-04-01
    • 2021-11-03
    • 2023-03-23
    • 2012-09-21
    相关资源
    最近更新 更多