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