DateField

Поле DateField в формах Django предназначено для обработки ввода дат от пользователя. Оно автоматически преобразует строковые значения в объекты Python datetime.date и выполняет валидацию формата даты. Поле принимает следующие основные параметры: input_formats - список допустимых форматов ввода, widget - виджет для отображения в HTML, required - обязательность заполнения, initial - начальное значение, а также стандартные параметры label, help_text и error_messages.

Синтаксис

pythonfrom 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'})
  )

Пример

Создадим форму для ввода даты рождения и проверим её валидацию:

pythonfrom 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")

Результат выполнения кода:

python"Valid date: 1990-05-15"

Пример

Используем поле DateField с несколькими форматами ввода и проверкой ошибок:

pythonfrom 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}")

Результат выполнения кода:

python"Event date: 2025-05-15"
"Errors: {'event_date': ['Введите правильную дату.']}"

Пример

Использование DateField с начальным значением и виджетом для выбора даты:

pythonfrom 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']}")

Результат выполнения кода:

python"Initial value: 2026-09-07"
"Selected date: 2026-09-07"

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

  • класс Form,
    базовый класс для создания форм в Django
  • поле DateTimeField,
    для ввода даты и времени
  • виджет DateInput,
    для отображения поля ввода даты
  • метод is_valid,
    для проверки валидности данных формы