"""Custom exception handler that returns consistent JSON error responses.""" from rest_framework.views import exception_handler def custom_exception_handler(exc, context): """Wrap DRF's default handler to always return {'detail': ..., 'code': ...}.""" response = exception_handler(exc, context) if response is not None: data = response.data # Flatten validation errors into a consistent shape if isinstance(data, dict) and "detail" not in data: response.data = {"detail": "Validation error", "fields": data, "code": "validation_error"} return response