Валидация данных с помощью метода is_valid()
Метод is_valid()
в Django 4 выполняет валидацию формы, проверяя корректность и полноту данных, а также применяя любые пользовательские валидаторы. Если форма валидна, метод вернет True, в противном случае – False:
form = MyForm(request.POST)
if form.is_valid():
# Обработка данных
else:
# Возврат ошибок
Работа с ошибками валидации
В случае ошибок валидации, метод is_valid()
вернет False, и можно получить информацию об ошибках с помощью атрибута errors
:
if form.is_valid():
# Обработка данных
else:
errors = form.errors
# Возврат ошибок пользователю
Создание пользовательских валидаторов
Для создания пользовательских валидаторов, определите функцию, которая принимает значение поля и проверяет его на соответствие определенным условиям. В случае ошибки, поднимите исключение ValidationError
:
from django.core.exceptions import ValidationError
def custom_validator(value):
if not some_condition(value):
raise ValidationError('Invalid value')
Применение пользовательских валидаторов
Чтобы применить пользовательский валидатор к полю формы, добавьте его в аргумент validators
при определении поля:
from django import forms
class MyForm(forms.Form):
custom_field = forms.CharField(validators=[custom_validator])
Обработка валидных данных
После успешной валидации формы, данные можно получить из атрибута cleaned_data
, который содержит словарь с очищенными и проверенными данными:
if form.is_valid():
cleaned_data = form.cleaned_data
# Обработка данных
Сохранение данных формы на основе модели
Если форма создана на основе модели, после успешной валидации можно вызвать метод save()
для сохранения данных в базу данных:
form = MyModelForm(request.POST)
if form.is_valid():
instance = form.save()
# Дополнительная обработка