DateField
Поле DateField в формах Django предназначено для обработки ввода дат от пользователя. Оно автоматически преобразует строковые значения в объекты Python datetime.date и выполняет валидацию формата даты. Поле принимает следующие основные параметры: input_formats - список допустимых форматов ввода, widget - виджет для отображения в HTML, required - обязательность заполнения, initial - начальное значение, а также стандартные параметры label, help_text и error_messages.
Синтаксис
from django import forms
class MyForm(forms.Form):
date_field = forms.DateField(
label="Дата",
required=True,
input_formats=['%Y-%m-%d', '%d/%m/%Y'],
widget=forms.DateInput(attrs={'type': 'date'})
)
Пример
Создадим форму для ввода даты рождения и проверим её валидацию:
from django import forms
from datetime import date
class BirthDateForm(forms.Form):
birth_date = forms.DateField(
label="Дата рождения",
help_text="Введите дату в формате ГГГГ-ММ-ДД"
)
# Пример обработки данных
form_data = {'birth_date': '1990-05-15'}
form = BirthDateForm(form_data)
if form.is_valid():
birth_date = form.cleaned_data['birth_date']
print(f"Valid date: {birth_date}")
else:
print("Form is invalid")
Результат выполнения кода:
"Valid date: 1990-05-15"
Пример
Используем поле DateField с несколькими форматами ввода и проверкой ошибок:
from django import forms
from datetime import date
class EventDateForm(forms.Form):
event_date = forms.DateField(
label="Дата события",
input_formats=['%Y-%m-%d', '%d.%m.%Y', '%m/%d/%Y'],
widget=forms.DateInput(attrs={'placeholder': 'ГГГГ-ММ-ДД'})
)
# Валидная дата
form = EventDateForm({'event_date': '15.05.2025'})
if form.is_valid():
print(f"Event date: {form.cleaned_data['event_date']}")
# Невалидная дата
invalid_form = EventDateForm({'event_date': 'invalid'})
if invalid_form.is_valid():
print("Valid")
else:
print(f"Errors: {invalid_form.errors}")
Результат выполнения кода:
"Event date: 2025-05-15"
"Errors: {'event_date': ['Введите правильную дату.']}"
Пример
Использование DateField с начальным значением и виджетом для выбора даты:
from django import forms
from datetime import date
class AppointmentForm(forms.Form):
appointment_date = forms.DateField(
label="Дата приёма",
initial=date.today(),
widget=forms.DateInput(attrs={'type': 'date'})
)
# Создание формы с начальным значением
form = AppointmentForm()
print(f"Initial value: {form.initial['appointment_date']}")
# Обработка POST данных
post_data = {'appointment_date': '2026-09-07'}
form = AppointmentForm(post_data)
if form.is_valid():
print(f"Selected date: {form.cleaned_data['appointment_date']}")
Результат выполнения кода:
"Initial value: 2026-09-07"
"Selected date: 2026-09-07"
Смотрите также
-
класс
Form,
базовый класс для создания форм в Django -
поле
DateTimeField,
для ввода даты и времени -
виджет
DateInput,
для отображения поля ввода даты -
метод
is_valid,
для проверки валидности данных формы