РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
288 of 643 menu

Атрибут errors

Атрибут errors применяется к экземпляру формы FlaskForm и содержит ошибки, возникшие при валидации. Это словарь, ключами которого выступают имена полей формы, а значениями - списки строк с текстами ошибок. Если поле прошло валидацию, оно отсутствует в словаре. Атрибут заполняется после вызова метода validate или validate_on_submit.

Синтаксис

form.errors

Пример

Давайте создадим форму с полем name и валидатором DataRequired, а затем выведем содержимое атрибута errors при пустом значении:

from flask import Flask, render_template 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 = None if form.validate_on_submit(): res = 'success' else: res = form.errors return render_template('index.html', form=form, res=res)

Шаблон для вывода результата:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.name.label }} {{ form.name() }}</p> <p>{{ form.submit() }}</p> </form> <p>{{ res }}</p>

Результат выполнения кода при отправке пустой формы:

{'name': ['This field is required.']}

Пример

Давайте переберём ошибки по полям и выведем каждое сообщение отдельно в шаблоне:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired, Length app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), Length(min=3)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): res = 'success' else: res = form.errors return render_template('index.html', form=form, res=res)

Шаблон с перебором ошибок:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.name.label }} {{ form.name() }}</p> {% for field, messages in res.items() %} {% for message in messages %} <p>{{ field }}: {{ message }}</p> {% endfor %} {% endfor %} <p>{{ form.submit() }}</p> </form>

Результат выполнения кода при отправке значения 'ab':

<p>name: Field must be at least 3 characters long.</p>

Смотрите также

  • класс FlaskForm,
    который является базовым классом для форм
  • метод validate_on_submit,
    который проверяет форму при отправке
  • метод validate,
    который запускает валидацию формы
  • атрибут data,
    который хранит значения полей формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить