Метод validate
Метод validate применяется к экземпляру формы
FlaskForm и запускает проверку всех полей. Если
хотя бы одно поле не проходит валидацию, метод
возвращает False, а объект формы наполняется
ошибками в атрибуте errors. Если все поля
корректны, метод возвращает True.
Синтаксис
form.validate()
Пример
Давайте создадим простую форму с полем для имени и проверим её валидность:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = form.validate()
return str(res)
При GET-запросе на адрес / форма не содержит данных,
поэтому валидация не пройдёт. Результат выполнения кода:
False
Пример
Давайте отправим корректные данные через POST-запрос и проверим результат валидации:
from flask import Flask, request
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
res = form.validate()
return str(res)
Если отправить POST-запрос с параметром name=abcde,
валидация пройдёт успешно. Результат выполнения кода:
True
Пример
Давайте выведем ошибки валидации, если форма не прошла проверку:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if not form.validate():
return str(form.errors)
return 'hello'
Если отправить POST-запрос с пустым полем name,
метод вернёт словарь с ошибками. Результат выполнения кода:
{'name': ['This field is required.']}
Смотрите также
-
метод
validate_on_submit,
который проверяет отправку формы и запускает валидацию -
атрибут
errors,
который хранит ошибки валидации полей -
валидатор
DataRequired,
который требует обязательного заполнения поля -
класс
FlaskForm,
который является базовым классом для всех форм