File: //home/arjun/projects/unlimited-leads/Unlimited-Leads-Be/unlimited_leads/renderers.py
from rest_framework.renderers import JSONRenderer
class CustomJSONRenderer(JSONRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
if isinstance(data, dict):
if 'errors' in data:
# If there are errors, extract the error messages
error_messages = []
# Iterate through the errors to format them
if isinstance(data['errors'], dict):
for field, errors in data['errors'].items():
# If there's more than one error for a field, you can choose how to handle it
for error in errors:
if error == 'This field is required.':
error_field = str(field).replace('_', ' ').title()
error_messages.append(f"{error_field} is required") # Include field name in the message
else:
error_messages.append(f"{error}") # Include only the error message
elif isinstance(data['errors'], list):
error_messages = data['errors'][0] if data['errors'] else "Found unknown renderer error"
else:
error_messages = data['errors']
# Replace errors with the formatted error messages
data['errors'] = error_messages
elif "detail" in data:
data['errors'] = data.pop('detail')
return super().render(data, accepted_media_type, renderer_context)