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

Правило NumberRange

Правило NumberRange применяется к полям формы и проверяет, что введённое число находится в заданных границах. Первым параметром передаётся минимальное значение, вторым - максимальное. Оба параметра необязательны, но хотя бы один должен быть указан. Если число выходит за границы, валидация не проходит.

Синтаксис

NumberRange(min=None, max=None, message=None)

Пример

Давайте создадим форму с полем age, которое принимает числа от 18 до 60:

from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import IntegerField, SubmitField from wtforms.validators import NumberRange app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MyForm(FlaskForm): age = IntegerField('Age', validators=[NumberRange(min=18, max=60)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): return f"age: {form.age.data}" return render_template('index.html', form=form)

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

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

Если ввести число 25, форма успешно пройдёт валидацию и вернёт результат:

"age: 25"

Пример

Если ввести число 15, оно окажется ниже минимальной границы и валидация не пройдёт:

"age: None"

При этом в атрибуте errors поля появится сообщение об ошибке.

Пример

Можно задать только минимальную границу, чтобы принимать любые числа не меньше заданного:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import IntegerField, SubmitField from wtforms.validators import NumberRange app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MyForm(FlaskForm): quantity = IntegerField('Quantity', validators=[NumberRange(min=1)]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): return f"quantity: {form.quantity.data}" return render_template('index.html', form=form)

Теперь любое число от 1 и выше пройдёт проверку.

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

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