Поле формы FloatField
Класс FloatField применяется для создания
поля формы, которое принимает дробное число.
При отправке формы значение преобразуется
в тип float. Если введённое значение
невозможно преобразовать в число, валидация
завершится ошибкой.
Первым параметром передаётся подпись поля,
которая отображается рядом с полем ввода.
Дополнительные параметры, такие как
validators, default и другие,
передаются как именованные аргументы.
Синтаксис
FloatField(label, [validators], [default])
Пример
Давайте создадим форму с полем для ввода дробного числа:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import FloatField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
price = FloatField('Price')
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return str(form.price.data)
return render_template('index.html', form=form)
Шаблон для вывода формы:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.price.label }} {{ form.price() }}</p>
<p>{{ form.submit() }}</p>
</form>
Если ввести значение 3.14 и отправить
форму, результат выполнения кода будет:
3.14
Пример
Давайте добавим валидатор DataRequired,
чтобы поле было обязательным:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import FloatField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
price = FloatField('Price', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return str(form.price.data)
return render_template('index.html', form=form)
Шаблон для вывода формы и ошибок:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.price.label }} {{ form.price() }}</p>
{% for error in form.price.errors %}
<p>{{ error }}</p>
{% endfor %}
<p>{{ form.submit() }}</p>
</form>
Если отправить пустое поле, валидация не пройдёт, и в шаблоне отобразится сообщение об ошибке.
Пример
Давайте зададим значение по умолчанию для поля:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import FloatField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'abcde'
class MyForm(FlaskForm):
price = FloatField('Price', default=1.5)
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
return render_template('index.html', form=form)
При открытии формы поле будет уже заполнено
значением 1.5.
Смотрите также
-
класс
Form,
который является базой для всех форм -
поле
IntegerField,
которое принимает целое число -
поле
DecimalField,
которое принимает десятичное число -
валидатор
DataRequired,
который делает поле обязательным