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

Поле формы DateField

Класс DateField применяется при описании формы Flask-WTF и создаёт поле для ввода даты. Первым параметром передаётся подпись поля, которая выводится рядом с элементом ввода. При отправке формы значение проходит валидацию и преобразуется в объект date из модуля datetime. По умолчанию поле принимает дату в формате '%Y-%m-%d', например '2024-01-15'.

Класс наследуется от Field и поддерживает общие параметры: validators для списка валидаторов, default для значения по умолчанию, format для собственного формата даты, render_kw для HTML-атрибутов.

Синтаксис

from wtforms import DateField field = DateField(label, [validators], [format], [default])

Пример

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

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

Шаблон для вывода формы и результата:

<form method="post"> {{ form.hidden_tag() }} <p>{{ form.birthday.label }} {{ form.birthday() }}</p> <p>{{ form.submit() }}</p> </form> {% if res %} <p>{{ res }}</p> {% endif %}

После отправки формы с датой '2024-01-15' результат выполнения кода:

2024-01-15

Пример

Давайте добавим валидатор DataRequired, чтобы поле было обязательным:

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

Если отправить пустое поле, форма не пройдёт валидацию, а в атрибуте errors появится сообщение об ошибке.

Пример

Давайте зададим собственный формат даты через параметр format:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import DateField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class DateForm(FlaskForm): birthday = DateField('Birthday', format='%d.%m.%Y') submit = SubmitField('Send') @app.route('/', methods=['GET', 'POST']) def index(): form = DateForm() res = None if form.validate_on_submit(): res = form.birthday.data return render_template('index.html', form=form, res=res)

Теперь поле принимает дату в формате '15.01.2024'. Результат выполнения кода:

2024-01-15

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

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