Jinja: loop to create form fields with same name but the last character

随声附和 提交于 2021-01-28 03:30:25

问题


I am using Flask and I have a WTF form with 12 input fields named like sold_1, sold_2,..., sold_12.

I would like to generate these fields in Jinja using a loop like:

{% for r in range(1, 13) %}
   {{ form.sold_ }}{{ r }}
{% endfor %}

or a similar syntax, but it doesn't work.

I solved it in a quite convoluted way as follows:

{% set tmp = "sold_x" %}
{% for r in range(1, 13) %}
    {{ form[tmp | replace('x', r)] }}
{% endfor %}

but I wonder whether there is a cleaner way.

Thanks


回答1:


You could use this:

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

or, if you want your input fields names to be sold_nr:

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

See this answer for more detail.

EDIT

Using the @dirn and @Libra sugestions the correct answer is:

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


来源:https://stackoverflow.com/questions/31112719/jinja-loop-to-create-form-fields-with-same-name-but-the-last-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!