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"] # 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」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 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 反馈 — 无需本地设置。
此课程中的所有课时
- 定义 forms.Form
- is_valid 与 cleaned_data
- 在模板中渲染表单
- CSRF 防护与 POST 流程