本文介绍了Jinja:循环创建具有相同名称但最后一个字符的表单域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Flask,并且我有一个WTF表单,其中包含12个输入字段,名称分别为sold_1,sold_2,...,sell_12.

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

我想使用类似以下的循环在Jinja中生成这些字段:

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.

谢谢

推荐答案

您可以使用:

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

,或者,如果您希望输入字段名称为sold_nr:

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.

编辑

使用@dirn和@Libra susgestations的正确答案是:

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

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

这篇关于Jinja:循环创建具有相同名称但最后一个字符的表单域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 10:38