Menu
CoddyTech

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"]
challenge icon

Thử thách

Dễ

Dùng biểu mẫu Django để kiểm tra sự kiện mới.

  1. Trong events/forms.py, viết EventForm: đặt title và place thành trường văn bản tối đa 100 ký tự, còn date thành trường ngày.
  2. 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_data rồi chuyển hướng đến sự kiện đó. Nếu không, đặt error thành Please 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

Tự luyện tập: Playground Django