Поле формы SelectField
Класс SelectField применяется для создания поля формы
в виде выпадающего списка. Первым параметром передаётся
подпись поля, вторым - список вариантов выбора в виде
пар «значение - отображаемый текст». После отправки формы
выбранное значение доступно в атрибуте data поля.
Синтаксис
SelectField(label, choices, [validators], [default])
Пример
Давайте создадим форму с выпадающим списком из трёх вариантов:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import SelectField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
choice = SelectField('Choice', choices=[
('1', 'Variant 1'),
('2', 'Variant 2'),
('3', 'Variant 3')
])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return form.choice.data
return render_template('index.html', form=form)
Шаблон для вывода формы:
<form method="post">
{{ form.choice.label }} {{ form.choice }}
{{ form.submit }}
</form>
После выбора второго варианта и отправки формы результат выполнения кода:
"2"
Пример
Давайте зададим значение по умолчанию и валидатор обязательного выбора:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import SelectField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
choice = SelectField('Choice',
choices=[('a', 'A'), ('b', 'B'), ('c', 'C')],
default='b',
validators=[DataRequired()]
)
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return form.choice.data
return render_template('index.html', form=form)
При открытии страницы в списке будет выбран вариант
'B', а при отправке форма вернёт:
"b"
Смотрите также
-
класс
FlaskForm,
от которого наследуются все формы -
метод
validate_on_submit,
который проверяет отправку и валидность формы -
атрибут
data,
в котором хранится выбранное значение -
поле
SelectMultipleField,
которое позволяет выбрать несколько значений