ValidationError 일으킬 시 error code 제공은 필수적인가요?
Answer 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 속성이 의미가 없습니다.
- https://github.com/django/django/blob/3.0.14/django/forms/fields.py#L137
- https://github.com/django/django/blob/3.0.14/django/db/models/fields/__init__.py#L604
아래의 코드의 Post 모델을 통해 생성된 모델폼에서는 유효성 검사 에러메세지는 "초기 에러메세지"가 아니라, "테스트 에러메세지"가 됩니다. code 속성이 지정되었기에 message 속성으로 지정된 "초기 에러메세지"는 "테스트 에러메세지"로 덮어쓰기가 됩니다.
즉, 폼/모델 필드를 정의하실 경우나 새로운 필드를 직접 만드시는 경우에, 필드 구현 내에서 에러메세지를 정의하실 때, 알려주신 공식문서의 내용대로 error_messages 속성 정의 및 code 속성을 활용하여, default_error_messages 재정의를 통해 에러메세지 변경이 용이해지게 됩니다.
예를 들어, IntegerField에서 default_error_messages는 아래와 같고, code=invalid 상황에서 "Enter a whole number" 에러메세지가 번역이 되어 표현이 됩니다.
모델 필드를 정의할 때, 다음과 같이 error_messages 속성을 지정하여, 해당 필드에 한하여 에러메세지를 변경하실 수 있습니다.
좋은 질문 감사드립니다.
화이팅입니다. :-)
안녕하세요.
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
595
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

