wtforms.fields.SelectMultipleField()-选择多个选项的下拉框字段
SelectMultipleField 是 WTForms 中用于创建下拉框字段(select field)的类,它允许用户选择多个选项。下面是一个关于如何使用 SelectMultipleField 的示例:
首先,确保已经安装了 WTForms 库:
pip install WTForms
然后,导入所需的模块:
from flask_wtf import FlaskForm from wtforms import SelectMultipleField from wtforms.validators import DataRequired
然后,创建一个表单类,继承自 FlaskForm 类:
class MyForm(FlaskForm):
my_field = SelectMultipleField('My Field', choices=[('1', 'Option 1'), ('2', 'Option 2'), ('3', 'Option 3')], validators=[DataRequired()])
在表单类中,我们创建了一个名为 my_field 的字段,并使用 SelectMultipleField 类来定义它。构造函数的 个参数是字段的标签(label),在这个例子中,我们使用了 'My Field' 作为标签。
choices 参数用于指定下拉框中供用户选择的选项。它是一个列表,其中的每个元素都是一个元组,每个元组包含两个项,分别是选项的值和选项的文本。在这个例子中,我们创建了三个选项,分别是 'Option 1','Option 2' 和 'Option 3',并分别将它们的值设置为 '1','2' 和 '3'。
validators 参数用于指定验证器,确保用户在提交表单时选择了至少一个选项。在这个例子中,我们使用了 DataRequired 验证器,确保用户选择了至少一个选项。
接下来,我们可以在视图函数中创建表单对象,并将其传递给模板来渲染:
from flask import Flask, render_template, request
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
selected_options = form.my_field.data
# 处理用户选择的选项
return render_template('index.html', form=form)
在这个例子中,我们首先创建了一个名为 form 的 MyForm 对象,然后在视图函数中,使用 form.validate_on_submit() 来检查用户是否提交了表单。如果用户提交了表单而且通过了验证,我们可以通过 form.my_field.data 属性来获取用户选择的选项列表。
最后,我们在模板中使用表单对象来渲染 HTML 表单:
<html>
<body>
<form method="POST" action="{{ url_for('index') }}">
{{ form.hidden_tag() }}
{{ form.my_field.label }}<br>
{{ form.my_field() }}<br>
{% for error in form.my_field.errors %}
<span style="color: red;">{{ error }}</span><br>
{% endfor %}
<input type="submit" value="Submit">
</form>
</body>
</html>
在模板中,我们首先使用 form.hidden_tag() 来生成用于 CSRF 保护的隐藏字段。接下来,使用 form.my_field.label 来渲染字段的标签,并使用 form.my_field() 来渲染字段本身。如果验证失败,我们可以使用 form.my_field.errors 来获取错误信息。
综上所述,这个例子展示了如何使用 SelectMultipleField 创建一个选择多个选项的下拉框字段,并在视图函数和模板中使用它。你可以根据自己的需求进行调整和扩展。
