반응형
.is_valid() 메소드는 부가적으로 raise_exception 플래그를 사용할 수 있는데, 이것을 사용하는 경우에 유효성 에러가 발생한다면,serilaizers.ValidationError exception을 발생 시킬 것이다
이러한 exception은 REST framework에서 제공되는 기본 exception 핸들러에 의해서 자동으로 관리되고 있고, 기본적으로 HTTP 400 Bad Request 응답을 리턴할 것이다.
# Return a 400 response if the data was invalid.
serializer.is_valid(raise_exception=True)
설명
- serializer.is_valid(raise_exception=True) 를 이용하면, 기본동작으로 is_valid 체크에서 에러가 날 때, ValidationError 를 raise 하게 된다.
- 대개의 경우에 view 에서 중간에 exception raise 될 경우, 500 응답을 주게 된다 그러나 위와 같이 ValidationError 가 raise되는 경우에는 DRF에서의 exception 핸들러에 의해서 400으로 리턴이 될 것이다. 즉, serializer.is_valid(raise_exception=True) 코드를 작성했고, 유효하지않은 데이터로 인해 ValidationError 가 raise 된 상태에서 어떤 exception handling을 하지 않는다면 그대로 400이 리턴될 것이다
class UserSerializerForTest(serializers.Serializer):
name = serializers.CharField()
class UserTest(APIView):
def post(self, request):
data = {"name1": "invalid key"}
# 유효하지 않은 키를 넘겨서 에러를 발생시킴
serializer = UserSerializerForTest(data=data)
serializer.is_valid(raise_exception=True) # 여기서 터짐
return Response()
결과
반응형
'개발 > 장고' 카테고리의 다른 글
[해설과 함께 읽는 Django 문서] 커스텀 SQL 실행하기 (0) | 2021.04.24 |
---|---|
[해설과 함께 읽는 Django 문서] 미리 정의된 모델 메소드 재정의 하기 (0) | 2021.04.24 |
[해설과 함께 읽는 DRF 문서] Validation (0) | 2021.04.24 |
[해설과 함께 읽는 Django 문서] Model methods (0) | 2021.04.04 |
[해설과 함께 읽는 Django 문서] Models - Meta Options, Model 속성들 (0) | 2021.02.02 |