我在模板中呈现的动态生成的RadioField
class F(Form):
pass
F.selection = RadioField(
'selection',
choices=options,
validators=[
DataRequired()
]
)
'options'是一个生成的元组数组,这很好用。它在我的模板
中打印时打印选项{% for subfield in form.selection %}
<p>
<tr>
<td>{{ subfield }}</td>
<td>{{ subfield.label }}</td>
</tr>
</p>
{% endfor %}
我现在面临的问题是,这给了我一组单选按钮,旁边有一个文本。在这种情况下,我希望人们在之间选择的“标题”。
但我想在那里有其他信息,例如。描述,大小,图像可能等等。
我目前尝试使用此额外信息制作元组列表并将其传递给模板。我可以在那里访问额外的信息,但我无法弄清楚如何同时迭代这两组数据
{% for item in data %}
<p>
{{ item[0] }}
{{ item[1] }}
{{ item[2] }}
</p>
{% endfor %}
我想要的是把它放在一个for循环中,这样我就可以制作漂亮的“增强”选项。现在我会使用zip,但我不能在Jinja2中这样做(我认为)并且我不能事先将其压缩,因为radiofield的选择参数不会采用它。
所以有什么建议吗?
答案 0 :(得分:1)
这将在后端/ Python端使用:
form = TestRadio()
form.radio.choices = [('one', '1'), ('two', '2')]
extra_stuff = [('a', 'b', 'c'), ('d', 'e', 'f')]
TestRadio
继承自flask-wtf Form
,如下所示:
class TestRadio(Form):
radio = RadioField()
假设extra_stuff
的长度与选择的数量相同,那么在jinja2中:
<form>
<table>
{% for subfield in form.radio %}
<tr>
<td> {{ form.csrf_token }} </td>
<td> {{ subfield }} </td>
{% for item in extra_stuff[loop.index0] %}
<td> {{ item }} </td>
{% endfor %}
</tr>
{% endfor %}
</table>
</form>
总结在Python端,在视图函数中设置选项。诀窍是我使用的loop
变量。它跟踪循环外层的索引。 (http://jinja.pocoo.org/docs/dev/tricks/#accessing-the-parent-loop)
关于添加图片: