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

wtforms.fields.SelectMultipleField()-支持多选的下拉选择字段

发布时间:2023-12-24 22:52:15

wtforms.fields.SelectMultipleField() 是 WTForms 中的一个字段类,用于创建一个支持多选的下拉选择字段。

使用该字段类可以创建一个下拉选择框,用户可以选择多个选项。用户的选择结果会以一个列表的形式进行提交。

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

from flask import Flask, request, render_template
from wtforms import Form
from wtforms.fields import SelectMultipleField, SubmitField

# 创建表单类
class MyForm(Form):
    # 创建一个 SelectMultipleField 字段
    choices = [('apple', 'Apple'), ('banana', 'Banana'), ('orange', 'Orange')]
    fruits = SelectMultipleField('Fruits', choices=choices)
    submit = SubmitField('Submit')

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm(request.form)
    
    if request.method == 'POST' and form.validate():
        # 获取用户的选择结果
        selected_fruits = form.fruits.data
        return render_template('result.html', fruits=selected_fruits)
        
    return render_template('index.html', form=form)

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

在上述例子中,我们首先创建了一个表单类 MyForm,其中包含一个 SelectMultipleField 类型的字段 fruits,用于选择水果。choices 参数用于指定下拉选项的选择,每个选项是一个元组,包含选项的值和显示文本。

接着,在路由函数中,我们创建了一个表单实例 form,然后判断请求的方法是 GET 还是 POST。如果是 POST 方法且表单数据验证通过,我们通过 form.fruits.data 获取用户选择的水果,并将结果传递给结果页面进行展示。

最后,我们分别创建了一个 index.htmlresult.html 模板文件,用于展示表单和结果。

index.html 模板文件的内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Multi-select Field Example</title>
</head>
<body>
    <h1>Select Fruits</h1>
    
    <form method="POST" action="/">
        {{ form.csrf_token }}
        
        <div>
            {{ form.fruits.label }}<br>
            {{ form.fruits.multiple() }}
        </div>
        
        {{ form.submit() }}
    </form>
</body>
</html>

result.html 模板文件的内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Result</title>
</head>
<body>
    <h1>Result</h1>
    
    <p>You have selected:</p>
    
    <ul>
        {% for fruit in fruits %}
            <li>{{ fruit }}</li>
        {% endfor %}
    </ul>
</body>
</html>

index.html 中,我们使用 form.fruits.multiple() 方法来生成多选的下拉选择框。

最后,我们运行应用并访问首页,将会看到一个展示水果选项的下拉选择框。选择感兴趣的水果后,点击提交按钮,将会跳转到结果页面,展示用户的选择结果。

以上就是使用 wtforms.fields.SelectMultipleField() 创建支持多选的下拉选择字段的示例。