Menu
CoddyTech

Django 폼 하나

Coddy Django 여정의 폼 섹션에 포함된 레슨. 20개 중 5번째.

날짜 없이 양식을 보내면 사이트가 충돌합니다. Django는 빈 텍스트를 날짜로 변환할 수 없습니다. 각 필드를 일일이 확인하려면 모든 필드와 모든 오류에 대한 코드를 작성해야 합니다.

Django 양식은 forms.py에 필드를 한 번 정의하며, 각 필드는 허용되는 값을 알고 있습니다. 식당 예약 양식은 다음과 같습니다.

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

달리 지정하지 않으면 모든 필드는 필수이며, CharField는 먼저 공백을 제거하므로 공백만 있는 이름은 빈 값으로 간주됩니다.

뷰에서 전달된 데이터로 양식을 만들고 is_valid()를 호출합니다. 이 메서드는 모든 필드를 확인하고 True 또는 False를 반환합니다. 그러면 form.cleaned_data에 Python 형식으로 변환된 값이 들어 있으므로 cleaned_data["day"]는 텍스트가 아니라 datetime.date입니다.

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

챌린지

쉬움
  • events/forms.py에서 EventForm을 작성하세요. title과 place는 최대 100자의 텍스트로, date는 날짜로 지정하세요.
  • new_event에서 POST 요청을 사용해 이를 확인하세요. 유효하면 변환된 값으로 이벤트를 만들고 리디렉션하세요. 유효하지 않으면 error를 Please check the form.으로 설정하여 페이지를 렌더링하세요.

실행을 누르고 날짜를 입력하지 않은 채 양식을 제출하세요.

직접 해보기

from django import forms

폼의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드