Правило 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,
которое требует наличия ввода в поле