Метод validate
Метод validate применяется к экземпляру класса
Field и запускает процесс валидации поля.
Первым параметром передаётся объект формы, к которой
принадлежит поле. Если данные не проходят проверку,
метод возбуждает исключение ValidationError,
а сообщение об ошибке сохраняется в атрибуте
errors поля. При успешной валидации метод
возвращает True.
Синтаксис
validate(form)
Пример
Давайте создадим простое поле и проверим его
значение через метод validate:
from wtforms import Form, StringField, validators
class UserForm(Form):
name = StringField('Name', [validators.DataRequired()])
form = UserForm()
form.name.data = 'abcde'
res = form.name.validate(form)
print(res)
Результат выполнения кода:
True
Пример
Давайте передадим пустое значение и посмотрим на результат валидации:
from wtforms import Form, StringField, validators
class UserForm(Form):
name = StringField('Name', [validators.DataRequired()])
form = UserForm()
form.name.data = ''
res = form.name.validate(form)
print(res)
print(form.name.errors)
Результат выполнения кода:
False
['This field is required.']
Пример
Давайте используем поле внутри формы Flask и выведем результат валидации через представление:
from flask import Flask, render_template
from wtforms import Form, StringField, validators
app = Flask(__name__)
class UserForm(Form):
name = StringField('Name', [validators.Length(min=3)])
@app.route('/')
def index():
form = UserForm()
form.name.data = 'ab'
res = form.name.validate(form)
return render_template('index.html', res=res, errors=form.name.errors)
Шаблон для вывода результата:
<p>{{ res }}</p>
<p>{{ errors }}</p>
Результат выполнения кода:
<p>False</p>
<p>['Field must be at least 3 characters long.']</p>
Смотрите также
-
класс
Field,
который представляет поле формы -
метод
process_formdata,
который обрабатывает данные из формы -
атрибут
errors,
который хранит список ошибок поля -
атрибут
data,
который содержит значение поля