Renderers in Django Rest Framework

Md Sadiqul Islam
2 min readMar 2, 2023

Renderers in Django are components that are responsible for taking the output of a view and converting it into a format that can be displayed by a client. Renderers are used to render views in various formats such as HTML, JSON, XML, CSV, etc.

Why do we need Renderers?

The purpose of a renderer is to convert the output of a view into a format that can be easily consumed by the client. For example, if a view is returning a list of objects, a renderer can be used to convert that list into JSON or XML format, which can be easily consumed by a client.

Renderers also provide a way to customize the format and content of the response. For example, a JSON renderer can be configured to include only certain fields or to format dates in a specific way.

How to use Renderers in Django?

Renderers can be used in Django by specifying them in the renderer_classes attribute of a view or viewset. For example:

from rest_framework import renderers, views

class MyView(views.APIView):
renderer_classes = [renderers.JSONRenderer]

def get(self, request, *args, **kwargs):
# Return JSON response
return Response({'hello': 'world'})

In this example, we are using the JSONRenderer to render the response as JSON. If we wanted to render the response as HTML, we could use the TemplateHTMLRenderer instead:

class MyView(views.APIView):
renderer_classes = [renderers.TemplateHTMLRenderer]
template_name = 'my_template.html'

def get(self, request, *args, **kwargs):
# Return HTML response
return Response({'hello': 'world'})

In this example, we are using the TemplateHTMLRenderer to render the response as HTML, using the my_template.html template.

Renderers can also be used with viewsets:

from rest_framework import viewsets

class MyViewSet(viewsets.ViewSet):
renderer_classes = [renderers.JSONRenderer]

def list(self, request):
# Return JSON response
return Response({'hello': 'world'})

In this example, we are using the JSONRenderer to render the response for the list action of the viewset.

Django also provides a default set of renderers that can be used out of the box, including JSONRenderer, XMLRenderer, BrowsableAPIRenderer, and TemplateHTMLRenderer.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response