Menu
CoddyTech

필드 하나 검사하기

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

이 게시판은 작년에 날짜가 지정된 이벤트를 허용합니다. 기본 제공 규칙은 유형과 제한은 알지만, 사이트에 대해서는 알지 못합니다. 한 필드에 적용할 자체 규칙은 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.라는 메시지와 함께 거부하세요. 오늘 날짜의 이벤트는 괜찮습니다.

실행을 누르고 어제로 날짜를 지정한 이벤트를 추가하세요.

직접 해보기

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 플레이그라운드