Поле формы BooleanField
Класс BooleanField применяется для создания поля-флажка
в форме Flask-WTF. Первым параметром передаётся подпись поля,
которая отображается рядом с чекбоксом. Значение поля хранится
в атрибуте data и принимает True, если флажок
установлен, и False в противном случае.
Синтаксис
from wtforms import BooleanField
field = BooleanField(label, [validators])
Пример
Давайте создадим простую форму с одним флажком:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import BooleanField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
agree = BooleanField('Agree')
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return str(form.agree.data)
return render_template('index.html', form=form)
Шаблон для вывода формы:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.agree() }} {{ form.agree.label }}</p>
<p>{{ form.submit() }}</p>
</form>
Если пользователь установит флажок и отправит форму, в ответ вернётся:
True
Пример
Давайте используем BooleanField вместе с валидатором
DataRequired, чтобы обязать пользователя установить флажок:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import BooleanField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
agree = BooleanField('Agree', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return 'accepted'
return render_template('index.html', form=form)
Если флажок не установлен, форма не пройдёт валидацию, а при успешной отправке сервер вернёт:
"accepted"
Пример
Давайте зададим начальное значение флажка через параметр
default:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import BooleanField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
agree = BooleanField('Agree', default=True)
@app.route('/')
def index():
form = MyForm()
return str(form.agree.data)
Результат выполнения кода:
True
Смотрите также
-
класс
Form,
который является базовым классом для форм Flask-WTF -
метод
validate_on_submit,
который проверяет отправку и валидность формы -
атрибут
data,
который хранит значение поля формы -
валидатор
DataRequired,
который требует обязательного заполнения поля