Jinja:循环创建具有相同名称但最后一个字符的表单字段

时间:2015-06-29 09:58:15

标签: python flask jinja2 flask-wtforms

我正在使用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 %}

但我想知道是否有一种更清洁的方式。

由于

1 个答案:

答案 0 :(得分:2)

你可以用这个:

{% 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 sugestions正确的答案是:

{% for r in range(1, 13) %}
    {{ form['sold_' ~ r] }}
{% endfor %}