10

没有找到另一个有类似问题的帖子,我正在尝试使用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>

我尝试使用 ()、{} 和 {{}} ...这可能吗?

4

1 回答 1

15

尝试:

<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__()filter n|string

于 2013-05-22T10:14:09.413 回答