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

Класс Form

Класс Form из библиотеки Flask-WTF используется для описания HTML-форм через Python-классы. Каждое поле формы задаётся атрибутом класса, а валидаторы передаются в конструктор поля. Экземпляр формы создаётся при обработке запроса, автоматически наполняется данными из request.form и может проверяться методом validate_on_submit. Параметром формы обычно выступает объект запроса, который передаётся первым аргументом.

Синтаксис

from flask_wtf import FlaskForm class FormName(FlaskForm): field_name = FieldType(validators=[...])

Пример

Давайте опишем простую форму с одним полем 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 UserForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = UserForm() if form.validate_on_submit(): return 'hello ' + form.name.data return render_template('index.html', form=form)

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

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

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

hello abcde

Пример

Давайте добавим валидатор длины и выведем ошибки в шаблоне:

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 UserForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), Length(min=3, max=10)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = UserForm() if form.validate_on_submit(): return 'user ' + form.name.data return render_template('index.html', form=form)

Шаблон с выводом ошибок:

<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>

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

Field must be at least 3 characters long.

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

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