Ответ
Метод is_valid() является центральным элементом механизма валидации форм в Django. Его вызов запускает цепочку проверок и является обязательным шагом перед работой с данными формы.
При вызове is_valid() происходят следующие действия:
- Запуск валидаторов: Выполняются все проверки, определённые для каждого поля формы (например,
max_length,required, кастомные валидаторы). - Вызов методов очистки: Последовательно вызываются методы
clean_<имя_поля>()для каждого поля и общий методclean()для всей формы. Это позволяет реализовать сложную логику валидации, зависящую от нескольких полей. - Заполнение
errors: Если хотя бы одна проверка не пройдена, словарьform.errorsзаполняется сообщениями об ошибках. - Заполнение
cleaned_data: Если все проверки успешно пройдены, данные формы, приведённые к нужным типам Python (например, строка ->int,date), помещаются в словарьform.cleaned_data. - Возврат результата: Метод возвращает
True, если ошибок нет, иFalseв противном случае.
Пример использования:
# views.py
from django.shortcuts import render
from .forms import ContactForm
def contact_view(request):
if request.method == 'POST':
form = ContactForm(request.POST)
# Запускаем валидацию
if form.is_valid():
# Данные корректны и доступны в form.cleaned_data
name = form.cleaned_data.get('name')
email = form.cleaned_data.get('email')
# ... логика обработки данных ...
return redirect('success_page')
else:
form = ContactForm()
# Если GET-запрос или форма невалидна, отображаем её с ошибками
return render(request, 'contact.html', {'form': form})
Использование is_valid() — это критически важный шаг для обеспечения целостности и безопасности данных, поступающих от пользователя.