wtforms.fields.SelectMultipleField()-支持多项选择的字段
在WTForms中,SelectMultipleField字段用于提供多选选项的表单字段。它允许用户从一个选项列表中选择多个选项。
要使用SelectMultipleField字段,首先需要导入该字段:
from wtforms import SelectMultipleField
然后,在定义表单类时,创建一个SelectMultipleField字段对象,并将选项作为参数传递给它。选项可以是一个列表,元组或字典。
下面是一个简单的使用例子,展示了如何使用SelectMultipleField字段:
from flask_wtf import FlaskForm
from wtforms import SelectMultipleField, SubmitField
# 定义一个示例表单类
class ExampleForm(FlaskForm):
# 创建一个SelectMultipleField字段,选项为元组的列表
choices = [('apple', 'Apple'), ('banana', 'Banana'), ('orange', 'Orange')]
fruits = SelectMultipleField('Fruits', choices=choices)
submit = SubmitField('Submit')
在上面的例子中,我们创建了一个名为ExampleForm的表单类,其中包含一个SelectMultipleField字段和一个SubmitField字段。
在SelectMultipleField字段中,我们定义了一个名为fruits的字段标签,并将选项作为choices参数传递给SelectMultipleField构造函数。选项是一个由元组组成的列表,每个元组表示一个选项,其中 个值是选项的值,第二个值是选项的显示文本。
一旦表单类定义完成,就可以在视图函数中使用ExampleForm类创建表单实例,并将其传递给模板进行渲染:
from flask import Flask, render_template, redirect, url_for
from forms import ExampleForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
# 定义一个路由,用于显示和处理表单
@app.route('/example', methods=['GET', 'POST'])
def example():
form = ExampleForm()
if form.validate_on_submit():
# 处理表单提交的数据
selected_fruits = form.fruits.data
# 对选中的水果进行处理
return redirect(url_for('success'))
return render_template('example.html', form=form)
# 定义一个路由,用于显示提交成功页面
@app.route('/success')
def success():
return 'Form submitted successfully!'
if __name__ == '__main__':
app.run()
在上面的例子中,我们首先导入ExampleForm类,并在example路由函数中创建一个ExampleForm实例。然后,我们在表单提交后获取选中的水果值,这些值保存在form.fruits.data中。
接下来,你可以对选中的水果进行处理,例如保存到数据库中。在这个例子中,我们简单地将用户重定向到一个提交成功页面。
最后,我们在render_template函数中将表单实例传递给模板进行渲染。
在模板中,你可以使用WTForms提供的字段方法来渲染SelectMultipleField字段:
<!DOCTYPE html>
<html>
<head>
<title>Example Form</title>
</head>
<body>
<h1>Example Form</h1>
<form method="POST" action="{{ url_for('example') }}">
{{ form.csrf_token }}
{{ form.fruits.label }}
{{ form.fruits }}
{{ form.submit }}
</form>
</body>
</html>
在上面的例子中,我们使用form.fruits.label和form.fruits来渲染fruits字段的标签和表单控件。form.csrf_token是用于防止CSRF攻击的隐藏字段,它需要在表单中包含。
以上就是使用WTForms中的SelectMultipleField字段的一个简单示例。该字段允许用户选择多个选项,并将所选选项的值存储在form.fruits.data中,以供在视图函数中处理。
