Menu
CoddyTech

필드 하나 검사하기

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

이 양식은 작년 날짜의 이벤트를 허용합니다. Django에 내장된 검사는 유형과 제한은 알지만, 사이트의 규칙은 알지 못합니다. 한 필드에 적용할 고유한 규칙은 clean_에 필드 이름을 붙인 메서드에 작성합니다. 스태프를 위해 admin이라는 이름을 사용할 수 없도록 하는 가입 양식은 다음과 같습니다.

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 username

is_valid()는 필드 자체의 검사가 끝난 다음 이 메서드를 호출하므로, 값은 이미 변환되어 있습니다. DateField는 날짜를 반환합니다. forms.ValidationError를 발생시키면 해당 필드가 거부되고, 오류 메시지가 필드 옆에 표시됩니다.

메서드는 반드시 값을 반환해야 합니다. 반환된 값은 cleaned_data에 저장됩니다. return이 없으면 값은 None이 됩니다.

challenge icon

챌린지

쉬움

EventForm에서 오늘보다 이전 날짜는 The date cannot be in the past.라는 메시지와 함께 거부하세요. 오늘 날짜의 이벤트는 괜찮습니다.

어제 날짜로, 2026-10-30처럼 입력해 이벤트를 추가하면 The date cannot be in the past.가 표시됩니다.

직접 해보기

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)

폼의 모든 레슨

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