해당 필드 하나에 대한 유효성 검사 수행
is_valid() 호출 시 자동으로 호출됨
그 필드의 value만 인자로 받음
반드시 정제된 value를 반환해야 함
예) .strip()이나 .lower() 적용 등
def validate_email(self, value):
value = value.strip().lower()
if not value.endswith("@example.com"):
raise serializers.ValidationError("example.com 도메인만 허용됩니다.")
return value
여러 필드 간의 상호검증 / 논리관계 검증에 사용
validate_< field>()들이 모두 성공한 후 자동으로 호출됨
모든 유효성 검사를 통과한 data 딕셔너리
최종적으로 정제된 data를 반환해야 함
def validate(self, data):
if data['new_password1'] != data['new_password2']:
raise serializers.ValidationError("비밀번호가 일치하지 않습니다.")
return data
validate_< field>()은 단일 필드만 보며 다른 필드 값은 볼 수 없음
validate()는 모든 필드 값을 다 볼 수 있음
에러 메시지는 일반적으로 프론트에 전달되기 때문에,
사용자 친화적인 문장으로 작성해야 함