Jinja:循环创建具有相同名称但最后一个字符的表单字段
Jinja: loop to create form fields with same name but the last character
我正在使用 Flask,我有一个 WTF 表单,其中包含 12 个输入字段,名称类似于 sold_1、sold_2、...、sold_12.
我想在 Jinja 中使用如下循环生成这些字段:
{% for r in range(1, 13) %}
{{ form.sold_ }}{{ r }}
{% endfor %}
或类似的语法,但它不起作用。
我以一种相当复杂的方式解决了它,如下所示:
{% set tmp = "sold_x" %}
{% for r in range(1, 13) %}
{{ form[tmp | replace('x', r)] }}
{% endfor %}
但我想知道是否有更简洁的方法。
谢谢
你可以使用这个:
{% for r in range(1, 13) %}
{{ form.sold_ ~ r }}
{% endfor %}
或者,如果您希望输入字段名称为 sold_nr
:
{% for r in range(1, 13) %}
{{ 'sold_' ~ r }}
{% endfor %}
有关详细信息,请参阅 this answer。
编辑
使用@dirn 和@Libra 的建议,正确答案是:
{% for r in range(1, 13) %}
{{ form['sold_' ~ r] }}
{% endfor %}
我正在使用 Flask,我有一个 WTF 表单,其中包含 12 个输入字段,名称类似于 sold_1、sold_2、...、sold_12.
我想在 Jinja 中使用如下循环生成这些字段:
{% for r in range(1, 13) %}
{{ form.sold_ }}{{ r }}
{% endfor %}
或类似的语法,但它不起作用。
我以一种相当复杂的方式解决了它,如下所示:
{% set tmp = "sold_x" %}
{% for r in range(1, 13) %}
{{ form[tmp | replace('x', r)] }}
{% endfor %}
但我想知道是否有更简洁的方法。
谢谢
你可以使用这个:
{% for r in range(1, 13) %}
{{ form.sold_ ~ r }}
{% endfor %}
或者,如果您希望输入字段名称为 sold_nr
:
{% for r in range(1, 13) %}
{{ 'sold_' ~ r }}
{% endfor %}
有关详细信息,请参阅 this answer。
编辑
使用@dirn 和@Libra 的建议,正确答案是:
{% for r in range(1, 13) %}
{{ form['sold_' ~ r] }}
{% endfor %}