Поле формы IntegerField
Класс IntegerField применяется для создания поля формы,
которое принимает целые числа. При отправке формы значение
автоматически преобразуется в целое число. Если введённое
значение не является целым числом, валидация завершится
ошибкой. Первым параметром передаётся подпись поля, которая
отображается рядом с полем ввода. Дополнительно можно
передать различные валидаторы, например NumberRange
или InputRequired.
Синтаксис
from wtforms import IntegerField
field = IntegerField(label, [validators], [default])
Пример
Давайте создадим простую форму с полем для ввода целого числа:
from flask import Flask, render_template, request
from wtforms import Form, IntegerField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(Form):
number = IntegerField('Number')
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST':
res = form.number.data
return str(res)
return render_template('index.html', form=form)
Шаблон для отображения формы:
<form method="post">
{{ form.number.label }}
{{ form.number() }}
{{ form.submit() }}
</form>
Если ввести в поле значение 123 и отправить форму,
результат выполнения кода будет:
"123"
Пример
Давайте добавим валидатор NumberRange, чтобы
ограничить диапазон вводимых чисел:
from flask import Flask, render_template, request
from wtforms import Form, IntegerField, SubmitField
from wtforms.validators import NumberRange
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(Form):
number = IntegerField('Number', [NumberRange(min=1, max=100)])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
res = form.number.data
return str(res)
return render_template('index.html', form=form)
Если ввести в поле значение 50, результат выполнения
кода будет:
"50"
Если ввести значение 500, валидация не пройдёт,
и форма вернётся с сообщением об ошибке.
Пример
Давайте используем значение по умолчанию для поля:
from flask import Flask, render_template, request
from wtforms import Form, IntegerField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(Form):
number = IntegerField('Number', default=10)
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm(request.form)
if request.method == 'POST':
res = form.number.data
return str(res)
return render_template('index.html', form=form)
При открытии формы поле будет содержать значение 10.
Если отправить форму без изменений, результат выполнения
кода будет:
"10"
Смотрите также
-
класс
Form,
который создаёт форму -
валидатор
NumberRange,
который ограничивает диапазон чисел -
валидатор
InputRequired,
который требует обязательного заполнения поля -
метод
validate,
который проверяет данные формы