is_valid и cleaned_data
Проверяйте входные данные и читайте очищенные значения
«is_valid и cleaned_data» — бесплатный урок Django Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Django Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Django Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Bind Data First
To validate, create a bound form by passing the submitted data into it. Only bound forms can be validated.
form = ContactForm(request.POST)Call is_valid()
is_valid() runs every field validation and returns True only if all of them pass. It triggers the whole cleaning process.
if form.is_valid():
handle(form)cleaned_data Appears
After is_valid() returns True, Django fills cleaned_data, a dict of validated, type-converted values ready to use.
name = form.cleaned_data["name"]Values Are Converted
Cleaning converts types too. An IntegerField gives you a real int, and a DateField gives you a Python date, not raw strings.
age = form.cleaned_data["age"] # intErrors Collect Automatically
If validation fails, the messages land in form.errors, keyed by field name so you can show each problem clearly.
if not form.is_valid():
print(form.errors)Field-Level clean Methods
Add a method named clean_field to validate one field and return its cleaned value. Raise ValidationError to reject it.
def clean_name(self):
name = self.cleaned_data["name"]
return name.strip()Raise ValidationError
Inside a clean method, raise ValidationError with a message to reject the value and attach an error to that field.
if "@" not in email:
raise forms.ValidationError("Bad email")Form-Wide clean()
Override clean() to validate fields against each other, like confirming two passwords match across the whole form.
def clean(self):
cleaned = super().clean()
return cleanedCross-Field Checks
In clean() you can read several cleaned_data keys and raise an error when their combination is invalid.
if start > end:
raise forms.ValidationError("Bad range")The Cleaning Order
Django runs field cleaning first, then your form-wide clean(). So clean() can safely rely on already-validated field values.
Use cleaned_data Safely
Always read input from cleaned_data, never from request.POST. Only cleaned_data holds validated, converted, trusted values.
email = form.cleaned_data["email"]Quick Check
Test your grip on validation.
Recap
Bind data, call is_valid(), then read trusted values from cleaned_data. Use clean methods to add your own rules. ✅
Часто задаваемые вопросы
Урок «is_valid и cleaned_data» бесплатный?
Да — полный текст урока «is_valid и cleaned_data» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Django Academy, подпишись на CoddyKit PRO. Курс Django Academy содержит 4 уроков всего.
Чему я научусь в уроке «is_valid и cleaned_data»?
Проверяйте входные данные и читайте очищенные значения Ты практикуешь Django Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Django Academy?
Предыдущий опыт не требуется. Django Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «is_valid и cleaned_data»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Django Academy?
Да. Каждый урок Django Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение forms.Form
- is_valid и cleaned_data
- Отображение форм в шаблонах
- Защита CSRF и поток POST