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类中,我们定义了一个名为choices的SelectMultipleField字段,将其显示文本设置为'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()的一个简单例子。它演示了如何创建一个多选选项列表字段,并在提交表单后获取用户选择的值。您可以根据自己的需求进行进一步的定制和扩展。
