FloatField
Поле FloatField в формах Django предназначено для ввода и валидации чисел с плавающей точкой. Оно преобразует входящие данные в объект типа float в Python. Это поле полезно, когда необходимо принимать дробные числа, например, цену товара, рейтинг или координаты. В качестве виджета по умолчанию используется NumberInput, который в HTML отображается как поле ввода числа.
При создании формы поле FloatField принимает различные параметры для настройки валидации: max_value и min_value для ограничения диапазона, required для указания обязательности поля, initial для начального значения, а также label и help_text для отображения подписей и подсказок.
Синтаксис
from django import forms
class MyForm(forms.Form):
my_field = forms.FloatField(
label="Метка поля",
help_text="Подсказка",
required=True,
min_value=0.0,
max_value=100.0,
initial=0.0
)
Пример
Создадим простую форму для ввода рейтинга товара:
from django import forms
class ProductRatingForm(forms.Form):
rating = forms.FloatField(
label="Рейтинг",
help_text="Введите число от 0.0 до 5.0",
min_value=0.0,
max_value=5.0,
initial=2.5
)
В шаблоне форма будет отображаться как поле ввода числа. После отправки формы можно получить очищенные данные:
from django.shortcuts import render
from .forms import ProductRatingForm
def rate_product(request):
if request.method == "POST":
form = ProductRatingForm(request.POST)
if form.is_valid():
rating = form.cleaned_data["rating"]
print(rating)
else:
form = ProductRatingForm()
return render(request, "rate.html", {"form": form})
Результат выполнения кода:
4.75
Пример
Поле FloatField также поддерживает необязательный параметр step_size, который задает шаг изменения значения в HTML-виджете:
from django import forms
class ProductForm(forms.Form):
price = forms.FloatField(
label="Цена товара",
help_text="Укажите цену товара в долларах",
min_value=0.01,
max_value=1000.00,
initial=9.99,
step_size=0.01
)
discount = forms.FloatField(
label="Скидка",
help_text="Укажите размер скидки в процентах",
min_value=0.0,
max_value=100.0,
initial=0.0
)
При отправке формы данные проходят валидацию, и если они не соответствуют заданным ограничениям, в форму добавляются ошибки:
from django.shortcuts import render
from .forms import ProductForm
def product_view(request):
if request.method == "POST":
form = ProductForm(request.POST)
if form.is_valid():
price = form.cleaned_data["price"]
discount = form.cleaned_data["discount"]
final_price = price - price * (discount / 100)
print(final_price)
else:
form = ProductForm()
return render(request, "product.html", {"form": form})
Результат выполнения кода:
79.92
Смотрите также
-
поле
IntegerField,
которое используется для целых чисел -
поле
DecimalField,
которое используется для точных чисел -
класс
Form,
базовый класс для создания форм -
класс
ModelForm,
который создает формы на основе моделей