0Pricing
Django Academy · 课时

is_valid 与 cleaned_data

验证输入并读取清理后的值

is_valid 与 cleaned_data 是 CoddyKit 上的免费 Django Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 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"]  # int

Errors 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 cleaned

Cross-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」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Django Academy 课程的其余内容,请升级到 CoddyKit PRO。 Django Academy 课程共包含 4 节课。

「is_valid 与 cleaned_data」这节课中我会学到什么?

验证输入并读取清理后的值 你通过在浏览器中直接运行的动手代码来练习 Django Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Django Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Django Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「is_valid 与 cleaned_data」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Django Academy 课中编写并运行代码吗?

能。每节 Django Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 定义 forms.Form
  2. is_valid 与 cleaned_data
  3. 在模板中渲染表单
  4. CSRF 防护与 POST 流程
← 返回 Django Academy