Programming-[Backend]/Django
[TIL] Django Restframework Exception Handler 개요
컴퓨터 탐험가 찰리
2023. 4. 16. 17:32
728x90
반응형
1. Exception Handler 설정
Django에서 exception handler는 settings.py 파일의 RESTFRAMEWORK 설정에서 경로를 지정해줄 수 있다.
기본적으로는 Class를 지정하여 사용하며 exception_handler.ExceptionHandler를 상속받아 메서드들을 override한다.
from rest_framework.views import exception_handler
class CustomExceptionHandler(exception_handler.ExceptionHandler):
def handle_exception(self, exc):
# Custom logic to handle the exception
# Return a custom response with error details
response = ...
return response
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'myapp.exceptions.CustomExceptionHandler',
...
}
또는 아래처럼 그냥 함수로 지정해줘도 된다.
REST_FRAMEWORK = {
"EXCEPTION_HANDLER": "backend.utils.basic_exception_handler",
...
}
2. 사용법
exception 정보를 담고 있는 exc, 요청 정보를 담고있는 context 파라미터의 대략적인 구성은 아래와 같다.
그리고 rest_framework.views의 exception_handler를 통해 response를 받아와서 처리하면 된다.
def error_message_exception_handler(exc, context):
response = exception_handler(exc, context)
if isinstance(exc, Http404):
code = error_code.UnprocessableNotFoundError.default_code
elif isinstance(exc, ValidationError):
code = error_code.UnprocessableInvalidValue.default_code
return response
728x90
반응형