inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

ValidationError 일으킬 시 error code 제공은 필수적인가요?

해결된 질문

449

goddios

작성한 질문수 8

0

https://docs.djangoproject.com/en/4.0/ref/forms/validation/
 
공식문서에서는 error code 를 제공하는 것을 권장하고 있습니다.
이는 항상 지켜야 하는 걸까요?
선택의 기준이 있는지 궁금합니다.
강의 내에서는 안쓰는 것 같기도 하고요
 
감사합니다!

validationerror django docker python react

답변 2

1

이진석

안녕하세요.

강의 내에서는 .code 속성에 대해서 다루지 않았습니다.

알려주신 공식문서에 다음 언급이 있습니다. // In order to make error messages flexible and easy to override, consider the following guidelines: // 에러메세지를 유연하게 정의할 수 있고, 에러메세지 내용을 재정의하기 쉽게 하기 위한 여러 방법 중에 code 속성 활용이 있다는 거죠.

ValidationError 예외에서 .message 속성과 .code 속성이 있는 데요. .code 속성은 옵션입니다. 폼/모델 Field 내의 유효성 검사에서, .code 속성이 있을 경우, Field 내의 error_messages 사전에서 error_messages[code] 참조를 통해 에러메세지를 가져와서 .message 속성을 덮어쓰기 합니다. // 그러니 폼/모델 Field 구현 내의 유효성 검사가 아닌 폼 구현에서의 유효성 검사에서는 .code 속성이 의미가 없습니다.

아래의 코드의 Post 모델을 통해 생성된 모델폼에서는 유효성 검사 에러메세지는 "초기 에러메세지"가 아니라, "테스트 에러메세지"가 됩니다. code 속성이 지정되었기에 message 속성으로 지정된 "초기 에러메세지"는 "테스트 에러메세지"로 덮어쓰기가 됩니다.

즉, 폼/모델 필드를 정의하실 경우나 새로운 필드를 직접 만드시는 경우에, 필드 구현 내에서 에러메세지를 정의하실 때, 알려주신 공식문서의 내용대로 error_messages 속성 정의 및 code 속성을 활용하여, default_error_messages 재정의를 통해 에러메세지 변경이 용이해지게 됩니다.

예를 들어, IntegerField에서 default_error_messages는 아래와 같고, code=invalid 상황에서 "Enter a whole number" 에러메세지가 번역이 되어 표현이 됩니다.

모델 필드를 정의할 때, 다음과 같이 error_messages 속성을 지정하여, 해당 필드에 한하여 에러메세지를 변경하실 수 있습니다.

좋은 질문 감사드립니다.

화이팅입니다. :-)

0

goddios

정성스런 답변 감사합니다!

안녕하세요.

0

48

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

272

1

useEffect 훅에서 else 유무에 따른 결과

0

211

1

useAxios 훅의 dependency array 설정

0

245

1

useEffect에서 변수 업데이트 관련 질문

0

381

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

266

1

bootstrap4

0

470

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

362

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

572

3

useState는 필수일까요?

0

261

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

596

4

Django allauth를 사용한 소셜 로그인 시 에러

0

654

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

552

2

useLocalStorage() 함수 사용여부

0

228

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

447

1

리듀서의 의미 재확인

0

430

1

simple-jwt Refresh Token 사용 노하우

0

897

2

docker compose 를 통한 배포 관련 오류 문의

0

670

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

364

1

is_like_user

0

233

1

related_name 오류

0

272

1

re_path 오류

0

258

1

re_path url

0

249

1

No post matches the given query

0

659

2