Класс ValidationError
Класс ValidationError применяется для создания
пользовательских ошибок валидации в формах Flask.
Он позволяет прервать процесс валидации поля и
добавить собственное сообщение об ошибке в список
errors формы. Класс наследуется от встроенного
исключения Exception и принимает первым
параметром текст сообщения об ошибке.
Синтаксис
from wtforms.validators import ValidationError
raise ValidationError(message)
Пример
Давайте создадим кастомный валидатор, который
выбрасывает исключение ValidationError,
если поле содержит слово 'abcde':
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import ValidationError
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
def check_abcde(form, field):
if field.data == 'abcde':
raise ValidationError('Invalid value')
class MyForm(FlaskForm):
name = StringField('Name', validators=[check_abcde])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return 'Form submitted'
return render_template('index.html', form=form)
Результат выполнения кода при вводе значения 'abcde':
['Invalid value']
Пример
Давайте выведем сообщение об ошибке в шаблоне:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.name.label }} {{ form.name() }}</p>
{% for error in form.name.errors %}
<p>{{ error }}</p>
{% endfor %}
<p>{{ form.submit() }}</p>
</form>
Результат выполнения кода для значения 'abcde':
<p>Invalid value</p>
Смотрите также
-
класс
Form,
который представляет форму Flask-WTF -
метод
validate_on_submit,
который проверяет отправку и валидность формы -
атрибут
errors,
который хранит список ошибок валидации -
валидатор
DataRequired,
который проверяет обязательное заполнение поля