Setting the parsers

The default set of parsers may be set globally, using the DEFAULT_PARSER_CLASSES setting. For example, the following settings would allow requests with XML content.


You can also set the parsers used for an individual view, or viewset, using the APIView class based views.

from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_xml.parsers import XMLParser

class ExampleView(APIView):
    A view that can accept POST requests with XML content.
    parser_classes = (XMLParser,)

    def post(self, request, format=None):
        return Response({'received data': request.DATA})

Or, if you're using the @api_view decorator with function based views.

def example_view(request, format=None):
    A view that can accept POST requests with XML content.
    return Response({'received data': request.DATA})

API Reference


Parses REST framework's default style of XML request content.

Note that the XML markup language is typically used as the base language for more strictly defined domain-specific languages, such as RSS, Atom, and XHTML.

If you are considering using XML for your API, you may want to consider implementing a custom renderer and parser for your specific requirements, and using an existing domain-specific media-type, or creating your own custom XML-based media-type.

Requires the defusedxml package to be installed.

.media_type: application/xml