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

Правило Optional

Правило Optional применяется к полю формы и помечает его как необязательное. Если пользователь не заполнил такое поле, то валидация поля проходит успешно, а остальные валидаторы (например, Length или Email) пропускаются. Если же значение передано, то все остальные правила проверяются как обычно. Правило не принимает обязательных параметров.

Синтаксис

Optional()

Правило передаётся в список validators нужного поля.

Пример

Давайте сделаем поле nickname необязательным с ограничением длины от 3 до 10 символов:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Optional, Length app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class UserForm(FlaskForm): nickname = StringField('Nickname', validators=[Optional(), Length(min=3, max=10)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = UserForm() if form.validate_on_submit(): return f"nickname: {form.nickname.data}" return render_template('index.html', form=form)

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

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

Если отправить форму с пустым полем nickname, то валидация пройдёт и мы получим:

nickname:

Пример

Давайте отправим форму со значением 'abcde' в поле nickname:

nickname: abcde

Теперь отправим слишком короткое значение 'ab'. Так как значение передано, правило Length вступает в силу и валидация не проходит:

Field must be between 3 and 10 characters long.

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

  • класс Form,
    который описывает форму целиком
  • правило DataRequired,
    которое требует обязательного заполнения поля
  • правило Length,
    которое проверяет длину значения
  • правило InputRequired,
    которое требует наличия ввода в поле
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить