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

Класс FlaskForm

Класс FlaskForm применяется для создания форм в приложениях Flask. Он наследуется от класса Form библиотеки WTForms и добавляет поддержку защиты от CSRF-атак, а также интеграцию с Flask-приложением. Поля формы описываются как атрибуты класса, а их типы задаются специальными классами полей, например StringField или SubmitField.

При создании экземпляра формы можно передать данные из запроса через параметр formdata. Если данные не переданы, форма считается пустой. Для проверки корректности данных используется метод validate_on_submit, который возвращает True, если форма была отправлена и все поля прошли валидацию.

Синтаксис

from flask_wtf import FlaskForm from wtforms import StringField, SubmitField class MyForm(FlaskForm): field = StringField('Label') submit = SubmitField('Send')

Пример

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

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): name = StringField('Name') submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): return f"Hello, {form.name.data}!" return render_template('index.html', form=form)

Шаблон для отображения формы:

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

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

Hello, abcde!

Пример

Давайте добавим валидацию поля с помощью DataRequired:

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'] = 'secret' 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(): return f"Hello, {form.name.data}!" return render_template('index.html', form=form)

Шаблон для отображения формы с ошибками:

<form method="post"> {{ form.csrf_token }} <p>{{ form.name.label }} {{ form.name() }}</p> {% for error in form.name.errors %} <p>{{ error }}</p> {% endfor %} <p>{{ form.submit() }}</p> </form>

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

This field is required.

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

  • метод validate_on_submit,
    который проверяет отправку и валидацию формы
  • метод hidden_tag,
    который выводит скрытые поля формы, включая CSRF-токен
  • атрибут errors,
    который содержит ошибки валидации полей
  • класс DataRequired,
    который проверяет обязательность заполнения поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить