【问题标题】:How to use SelectMultipleField using wtforms如何使用 wtforms 使用 SelectMultipleField
【发布时间】:2026-02-06 01:45:01
【问题描述】:

我无法理解 SelectMultipleField 的 documentation。 是这么写的

"您需要为选择字段指定 HTML 大小属性 渲染时。”

我不明白我在哪里具体指定。

附件是选择字段的代码(有效),我应该对 SelectMultipleField 做哪些更改?

form.py

domains = SelectField(label='Domain', choices=DOMAINS, validate_choice=True, validators=[InputRequired()])

html

    <div class="form-group">
        {{ form.domains.label(class="form-control-label") }}
        {% if form.domains.errors %}
            {{ form.domains(class="form-control form-control-lg is-invalid") }}
            <div class="invalid-feedback">
                {% for error in form.domains.errors %}
                    <span>{{ error }}</span>
                {% endfor %}
            </div>
        {% else %}
            {{ form.domains(class="form-control form-control-lg") }}
        {% endif %}
    </div>

【问题讨论】:

    标签: python html forms flask flask-wtforms


    【解决方案1】:

    “大小”属性指定要在滚动框中显示的选择字段的选项数。更多信息请查看https://www.w3schools.com/TAGS/att_size.asp

    正如您所做的那样,使用 WTF 库,您可以在圆括号之间指定 HTML 属性,例如“类”,但许多其他属性是可用的,大小是其中之一,因此,要解决您的问题,您只需键入

    {{ form.domains(class="form-control form-control-lg", size=x) }}
    

    其中 x 代表您希望显示的选项数量。

    【讨论】:

    • 这不起作用:我做了两个更改:第一个更改为您所写的(我检查了 SelectField 的情况,它起作用了)。第二个是在 form.py 中,我将代码更改为 `domains = SelectMultipleField(label='Domain', Choices=DOMAINS, validate_choice=True, validators=[InputRequired()])`在调试器中得到错误:“ValueError: too many values to unpack (expected 2)” from this line {{ form.domains(class="form-control form-control-lg", size="3") }}