Kiểm tra một trường
Thuộc phần Biểu mẫu trong hành trình Django của Coddy. Bài học 10 trên 20.
Biểu mẫu chấp nhận sự kiện có ngày vào năm ngoái. Các bước kiểm tra tích hợp sẵn của Django nhận biết kiểu dữ liệu và giới hạn, chứ không biết quy tắc riêng của trang web bạn. Bạn có thể thêm quy tắc riêng cho một trường bằng một phương thức (method) có tên gồm clean_ cộng với tên trường. Ví dụ về biểu mẫu đăng ký giữ lại tên admin cho nhân viên:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() gọi phương thức này sau khi kiểm tra riêng trường đó, nên giá trị đã được chuyển đổi: DateField trả về một ngày. Khi bạn đưa ra forms.ValidationError, trường đó không được chấp nhận và thông báo sẽ xuất hiện bên cạnh trường.
Phương thức phải return giá trị: giá trị mà phương thức trả về sẽ nằm trong cleaned_data. Nếu không có return, giá trị sẽ trở thành None.
Thử thách
DễTrong EventForm, từ chối ngày trước hôm nay bằng thông báo The date cannot be in the past. Ngày diễn ra sự kiện là hôm nay thì hợp lệ.
Thêm một sự kiện có ngày hôm qua, nhập theo định dạng 2026-10-30: bạn sẽ thấy The date cannot be in the past.
Tự làm thử
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Tất cả bài học trong Biểu mẫu
2Biểu mẫu Django
Một biểu mẫu DjangoTạo biểu mẫuTự luyện tập: Playground Django