Поле формы SelectMultipleField
Класс SelectMultipleField создаёт поле формы в виде выпадающего списка, в котором пользователь может выбрать сразу несколько вариантов. Первым параметром передаётся имя поля, вторым - список вариантов choices в виде пар кортежей. Третьим параметром можно передать дополнительные настройки, например coerce для приведения типов выбранных значений.
Синтаксис
from wtforms import SelectMultipleField
field = SelectMultipleField(label, [validators], choices=[])
Пример
Давайте создадим форму с полем множественного выбора и выведем выбранные значения:
from flask import Flask, render_template, request
from wtforms import Form, SelectMultipleField, SubmitField
app = Flask(__name__)
class MyForm(Form):
items = SelectMultipleField(
'Items',
choices=[
('a', 'Item A'),
('b', 'Item B'),
('c', 'Item C'),
('d', 'Item D'),
('e', 'Item E')
]
)
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST':
return str(form.items.data)
return render_template('index.html', form=form)
Шаблон для отображения формы:
<form method="post">
{{ form.items }}
{{ form.submit }}
</form>
Результат выполнения кода при выборе пунктов a и c:
['a', 'c']
Пример
Давайте передадим coerce=int, чтобы значения приводились к числам:
from flask import Flask, render_template, request
from wtforms import Form, SelectMultipleField
app = Flask(__name__)
class MyForm(Form):
nums = SelectMultipleField(
'Nums',
coerce=int,
choices=[
(1, 'One'),
(2, 'Two'),
(3, 'Three'),
(4, 'Four'),
(5, 'Five')
]
)
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST':
return str(form.nums.data)
return render_template('index.html', form=form)
Результат выполнения кода при выборе пунктов 1, 3 и 5:
[1, 3, 5]
Смотрите также
-
класс
Form,
который создаёт форму -
поле
SelectField,
которое создаёт выпадающий список с одним выбором -
поле
RadioField,
которое создаёт переключатели -
метод
validate_on_submit,
который проверяет отправку формы