raise_exception은 Django REST Framework(DRF)에서 사용되는 is_valid() 메서드의 옵션 중 하나로, 검증(validation) 중에 발생한 오류를 예외로 처리할지 여부를 결정하는 데 사용됩니다.
is_valid() 메서드에 raise_exception=True라는 인자를 전달하면, 데이터 검증이 실패했을 때 ValidationError 예외가 발생합니다. 이를 통해 검증 오류가 발생할 경우 즉시 예외를 던져, 후속 코드가 실행되지 않도록 할 수 있습니다.
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
class MySerializer(serializers.Serializer):
name = serializers.CharField(max_length=100)
age = serializers.IntegerField(min_value=0)
def my_view(request):
if request.method == 'POST':
serializer = MySerializer(data=request.data)
try:
# is_valid()에 raise_exception=True를 전달하여 예외 발생을 활성화
serializer.is_valid(raise_exception=True)
# 데이터가 유효한 경우 처리
name = serializer.validated_data['name']
age = serializer.validated_data['age']
# 여기서 데이터를 처리합니다.
return Response(serializer.validated_data)
except ValidationError as e:
# 검증 실패 시 예외 처리
return Response({'errors': e.detail}, status=400)
return Response(serializer.data)
serializer.is_valid(raise_exception=True):ValidationError 예외를 즉시 발생시킵니다.ValidationError가 발생하며, 이는 클라이언트에게 400 Bad Request와 함께 오류 메시지를 전달하게 됩니다.raise_exception=True를 사용하면, 별도의 오류 응답을 수동으로 작성할 필요 없이 DRF의 표준 오류 응답을 활용할 수 있습니다.is_valid(raise_exception=True)는 데이터 검증이 실패할 경우 ValidationError 예외를 발생시킵니다.