欢迎访问宙启技术站
智能推送

wtforms.fields.SelectMultipleField()-多选选项列表字段

发布时间:2023-12-24 22:54:40

wtforms.fields.SelectMultipleField()是WTForms中的一个字段类,用于生成一个多选选项列表字段。多选选项列表字段允许用户从给定的选项中选择多个值。

以下是一个使用wtforms.fields.SelectMultipleField()的例子:

from flask import Flask, render_template, request
from wtforms import Form, SelectMultipleField, validators

app = Flask(__name__)

class MyForm(Form):
    options = [
        ('1', 'Option 1'),
        ('2', 'Option 2'),
        ('3', 'Option 3'),
    ]
    choices = SelectMultipleField('Select Options', choices=options)

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm(request.form)
    if request.method == 'POST' and form.validate():
        selected_options = form.choices.data
        return f'Selected Options: {selected_options}'
    return render_template('index.html', form=form)

if __name__ == '__main__':
    app.run()

在上面的例子中,我们创建了一个名为MyForm的表单类,该类继承了Form基类。在MyForm类中,我们定义了一个名为choicesSelectMultipleField字段,将其显示文本设置为'Select Options',并将选项赋值给options列表。options列表中的每个元素都是一个包含选项值和显示文本的元组。

在视图函数中,我们实例化了MyForm类,并将请求中的表单数据传递给它。然后,我们判断请求的方式是否是POST,以及表单是否验证通过。如果通过验证,我们获取用户选择的选项值,并返回一个包含选项值的响应。如果请求的方式是GET,或者表单验证不通过,我们渲染一个包含表单的HTML模板。

以下是index.html模板的示例:

<!DOCTYPE html>
<html>
<head>
    <title>Multi-Select Options</title>
</head>
<body>
    <h1>Multi-Select Options</h1>
    <form method="POST">
        {{ form.csrf_token }}
        {{ form.choices.label }}: <br>
        {{ form.choices() }}<br><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

在模板中,我们使用{{ form.choices.label }}{{ form.choices() }}分别显示字段的标签和多选选项列表。

当用户选择了多个选项并提交表单时,将会触发POST请求,请求将被应用程序的视图函数处理。视图函数中,我们可以通过form.choices.data来获取用户选择的值,并最终将其显示在页面上。

以上是使用wtforms.fields.SelectMultipleField()的一个简单例子。它演示了如何创建一个多选选项列表字段,并在提交表单后获取用户选择的值。您可以根据自己的需求进行进一步的定制和扩展。