没有找到另一个有类似问题的帖子,我正在尝试使用flask和wtforms生成一些复选框,目前我已经得到了这段代码:
<div class="control-group">
<p><strong>Check the enabled BRI Ports</strong></p>
<label class="checkbox inline">
{{ form.bri1(value=1) }} {{ form.bri1.label }}
</label>
<label class="checkbox inline">
{{ form.bri2(value=1) }} {{ form.bri2.label }}
</label>
<label class="checkbox inline">
{{ form.bri3(value=1) }} {{ form.bri3.label }}
</label>
<label class="checkbox inline">
{{ form.bri4(value=1) }} {{ form.bri4.label }}
</label>
</div>
到目前为止,这是有效的,但现在我尝试使用简单的for循环来执行此操作:
<div class="control-group">
<p><strong>Check the enabled BRI Ports</strong></p>
{% for n in range(1,6) %}
<label class="checkbox inline">
{{ form.brin.label }}
{% endfor %}
</div>
我尝试过使用(),{}和{{}} ......这有可能吗?
答案 0 :(得分:13)
尝试:
<div class="control-group">
<p><strong>Check the enabled BRI Ports</strong></p>
{% for name, field in form._fields.items() %}
{% if name != 'csrf_token' %}
<label class="checkbox inline">
{{ field(value=1) }} {{ field.label }}
</label>
{% endif %}
{% endfor %}
</div>
您可以设置排序form._fields.items()
或条件而不是{% if name != 'csrf_token' %}
。或者:
<div class="control-group">
<p><strong>Check the enabled BRI Ports</strong></p>
{% for n in range(1,6) %}
{% if form['bri' + n|string] %}
<label class="checkbox inline">
{{ form['bri' + n|string](value=1) }} {{ form['bri' + n|string].label }}
</label>
{% endif %}
{% endfor %}
</div>
您还可以使用n.__str__()
代替过滤n|string
。