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