diff --git a/solution/pulse/pulse/middleware.py b/solution/pulse/pulse/middleware.py new file mode 100644 index 0000000..1cf02b8 --- /dev/null +++ b/solution/pulse/pulse/middleware.py @@ -0,0 +1,14 @@ +from django.http import JsonResponse +from rest_framework import status + + +class ErrorResponseMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + if response.status_code >= status.HTTP_400_BAD_REQUEST: + response.data = {"reason": response.data} + response = JsonResponse(response.data, status=response.status_code) + return response diff --git a/solution/pulse/pulse/settings.py b/solution/pulse/pulse/settings.py index 6180ac5..4a7010f 100644 --- a/solution/pulse/pulse/settings.py +++ b/solution/pulse/pulse/settings.py @@ -38,6 +38,8 @@ MIDDLEWARE = [ "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", + # Developed middleware + "pulse.middleware.ErrorResponseMiddleware", ] ROOT_URLCONF = "pulse.urls" @@ -112,6 +114,9 @@ STATIC_ROOT = BASE_DIR / "static" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" REST_FRAMEWORK = { + "DEFAULT_RENDERER_CLASSES": [ + "rest_framework.renderers.JSONRenderer", + ], "DEFAULT_FILTER_BACKENDS": [ "django_filters.rest_framework.DjangoFilterBackend" ],