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

使用wtforms的SelectMultipleField()创建多选项下拉菜单

发布时间:2024-01-14 10:37:13

wtforms是一个用于创建Web表单的Python库。其中的SelectMultipleField()是用来创建多选项下拉菜单的字段。

下面是一个使用wtforms的SelectMultipleField()创建多选项下拉菜单的例子:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import SelectMultipleField, SubmitField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'

class MyForm(FlaskForm):
    fruits = SelectMultipleField('Fruits', choices=[('apple', 'Apple'), 
                                                    ('banana', 'Banana'),
                                                    ('orange', 'Orange'),
                                                    ('grape', 'Grape')])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()

    if form.validate_on_submit():
        selected_fruits = form.fruits.data
        # 对选择的水果进行处理

    return render_template('index.html', form=form)

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

上述代码首先导入了Flask、FlaskForm、SelectMultipleField和SubmitField类。然后,创建了一个名为MyForm的表单类,该类包含一个名为fruits的SelectMultipleField字段和一个名为submit的SubmitField字段。

在创建MyForm类时,我们在SelectMultipleField的构造函数中传入了一个参数,用于指定该字段的标签。然后,通过choices参数指定了下拉菜单的选项,每个选项是一个包含两个元素的元组,第一个元素是选项的值,第二个元素是显示在下拉菜单中的文本。

接下来,在index函数中,我们创建了一个MyForm实例,并在render_template函数中将其传递给HTML模板。当用户提交表单时,我们可以通过form.fruits.data获取用户选择的水果。

最后,在HTML模板中,我们可以使用form.fruits来渲染SelectMultipleField字段,使用form.submit来渲染SubmitField字段。

以下是index.html的内容:

<!DOCTYPE html>
<html>
<head>
    <title>Multiple Select Example</title>
</head>
<body>
    <h1>Multiple Select Example</h1>
    <form method="POST" action="/">
        {{ form.csrf_token }}
        {{ form.fruits.label }}<br>
        {{ form.fruits(class_="form-control") }}<br>
        {{ form.submit(class_="btn btn-primary") }}
    </form>
</body>
</html>

在上述HTML模板中,我们通过{{ form.csrf_token }}生成一个隐藏的CSRF令牌,用于保护表单免受跨站请求伪造攻击。

然后,我们使用{{ form.fruits.label }}和{{ form.fruits(class_="form-control") }}分别渲染SelectMultipleField字段的标签和下拉菜单。在渲染下拉菜单时,我们还使用了class_参数指定了CSS类名,以便样式化该下拉菜单。

最后,我们使用{{ form.submit(class_="btn btn-primary") }}渲染SubmitField字段。

这就是使用wtforms的SelectMultipleField()创建多选项下拉菜单的例子。希望这个例子对你有帮助!