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

Метод validate_on_submit

Метод validate_on_submit применяется к экземпляру формы FlaskForm внутри функции-обработчика. Он возвращает True, если форма была отправлена методом POST и все её поля прошли валидацию. Если форма не отправлена или содержит ошибки, метод возвращает False. Параметров метод не принимает.

Синтаксис

form.validate_on_submit()

Пример

Давайте создадим форму с одним полем и проверим её через validate_on_submit:

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() if form.validate_on_submit(): res = form.name.data else: res = 'no data' return render_template('index.html', form=form, res=res)

Шаблон для вывода формы:

<+jinja+>
{{ form.hidden_tag() }}

{{ form.name.label }} {{ form.name() }}

{{ form.submit() }}

{{ res }}

<-jinja+>

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

"no data"

Пример

Давайте посмотрим, что произойдёт при корректно заполненном поле name:

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() if form.validate_on_submit(): res = 'hello, ' + form.name.data else: res = 'no data' return render_template('index.html', form=form, res=res)

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

"hello, user"

Пример

Давайте проверим атрибут 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 = 'no data' if form.validate_on_submit(): res = form.name.data else: res = form.errors return render_template('index.html', form=form, res=res)

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

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

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

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