Một biểu mẫu Django
Thuộc phần Biểu mẫu trong hành trình Django của Coddy. Bài học 5 trên 20.
Gửi biểu mẫu mà không có ngày, trang web sẽ gặp sự cố: Django không thể chuyển văn bản trống thành ngày tháng. Kiểm tra thủ công từng trường sẽ cần viết code cho mọi trường và mọi lỗi.
Biểu mẫu Django mô tả các trường một lần trong forms.py, và mỗi trường biết mình chấp nhận những gì. Biểu mẫu đặt chỗ của một nhà hàng:
from django import forms
class BookingForm(forms.Form):
name = forms.CharField(max_length=50)
day = forms.DateField()
guests = forms.IntegerField()Mọi trường đều bắt buộc trừ khi bạn chỉ định khác đi, và CharField xóa khoảng trắng trước, vì vậy tên chỉ gồm khoảng trắng sẽ được tính là trống.
Trong view, tạo biểu mẫu từ dữ liệu nhận được rồi gọi is_valid(): hàm này kiểm tra mọi trường và trả về True hoặc False. Sau đó, form.cleaned_data chứa các giá trị đã được chuyển đổi sang Python, nên cleaned_data["day"] là một datetime.date, không phải văn bản:
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]Thử thách
DễDùng biểu mẫu Django để kiểm tra sự kiện mới.
- Trong
events/forms.py, viếtEventForm: đặttitlevàplacethành trường văn bản tối đa 100 ký tự, còndatethành trường ngày. - Trong
new_event, tạo biểu mẫu từrequest.POST. Nếu biểu mẫu hợp lệ, tạo sự kiện từform.cleaned_datarồi chuyển hướng đến sự kiện đó. Nếu không, đặterrorthànhPlease check the form.
Gửi biểu mẫu mà không điền ngày: bạn sẽ thấy Please check the form.
Tự làm thử
from django import forms
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