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

Поле формы DecimalField

Поле DecimalField применяется в классе формы Flask-WTF и создаёт поле для ввода десятичных чисел. При отправке формы значение преобразуется в объект Decimal из модуля decimal. Первым параметром передаётся подпись поля, которая отображается рядом с элементом ввода. В отличие от FloatField, это поле хранит точное значение без потери разрядов, что важно для денежных сумм и научных расчётов.

Поле принимает параметры places и rounding. Параметр places задаёт количество знаков после запятой для округления. Параметр rounding определяет режим округления из модуля decimal.

Синтаксис

from wtforms import DecimalField field = DecimalField(label, [validators], [places], [rounding])

Пример

Давайте создадим форму с полем для ввода цены:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import DecimalField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class PriceForm(FlaskForm): price = DecimalField('Price', [DataRequired()]) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = PriceForm() res = None if form.validate_on_submit(): res = form.price.data return render_template('index.html', form=form, res=res)

Теперь создадим шаблон для вывода формы:

<form method="post"> {{ form.csrf_token }} <p>{{ form.price.label }} {{ form.price }}</p> <p>{{ form.submit }}</p> </form> {% if res %} <p>Result: {{ res }}</p> {% endif %}

Если ввести значение 12.34 и отправить форму, результат выполнения кода будет таким:

12.34

Пример

Давайте зададим точность в два знака после запятой:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import DecimalField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class MoneyForm(FlaskForm): amount = DecimalField('Amount', [DataRequired()], places=2) submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = MoneyForm() res = None if form.validate_on_submit(): res = form.amount.data return render_template('index.html', form=form, res=res)

Если ввести значение 10.567 и отправить форму, результат выполнения кода будет таким:

10.57

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

  • поле FloatField,
    которое принимает числа с плавающей точкой
  • поле IntegerField,
    которое принимает целые числа
  • валидатор NumberRange,
    который проверяет число на попадание в диапазон
  • валидатор DataRequired,
    который требует обязательного заполнения поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить