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

Правило Length

Правило Length применяется к полю формы и проверяет длину введённой строки. Первым параметром передаётся минимальная длина, вторым - максимальная. Если длина строки не попадает в указанный диапазон, валидация завершается ошибкой.

Синтаксис

Length(min=-1, max=-1, message=None)

Пример

Давайте проверим, что длина строки находится в диапазоне от 2 до 5 символов:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Length app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): text = StringField('Text', validators=[Length(min=2, max=5)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() res = None if form.validate_on_submit(): res = form.text.data return render_template('index.html', form=form, res=res)

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

<+jinja+>
{{ form.hidden_tag() }} {{ form.text() }} {{ form.submit() }}
{% if res %}

{{ res }}

{% endif %} <-jinja+>

Если ввести 'abcde', форма пройдёт валидацию и результат выполнения кода будет:

abcde

Пример

Давайте зададим только минимальную длину без верхней границы:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Length app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): text = StringField('Text', validators=[Length(min=3)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() res = None if form.validate_on_submit(): res = form.text.data return render_template('index.html', form=form, res=res)

Если ввести 'hello', форма пройдёт валидацию и результат выполнения кода будет:

hello

Пример

Давайте выведем сообщение об ошибке, если длина строки не попадает в диапазон:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Length app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' class MyForm(FlaskForm): text = StringField('Text', validators=[ Length(min=2, max=5, message='Length must be from 2 to 5') ]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() res = None if form.validate_on_submit(): res = form.text.data return render_template('index.html', form=form, res=res)

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

<+jinja+>
{{ form.hidden_tag() }} {{ form.text() }} {% for error in form.text.errors %}

{{ error }}

{% endfor %} {{ form.submit() }}
<-jinja+>

Если ввести 'a', форма не пройдёт валидацию и результат выполнения кода будет:

Length must be from 2 to 5

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

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