Skip to main content

File download and upload support for Django REST framework

Project description

REST framework files

build-status-image coverage-status-image

File download and upload support for Django REST framework.


REST framework files allows you to download a file in the format used to render the response and also allows creation of model instances by uploading a file containing the model fields.


  • Python (2.7, 3.5)
  • Django REST framework (3.4, 3.6)


Install using pip:

pip install djangorestframework-files


from django.db import models

class ABC(models.Model):
    name = models.CharField(max_length=255)

from rest_framework import serializers

from .models import ABC

class ABCSerializer(serializers.ModelSerializer):
    class Meta:
        model = ABC
        fields = '__all__'

from rest_framework.parsers import JSONParser, MultiPartParser
from rest_framework_files.viewsets import ImportExportModelViewSet

from .models import ABC
from .serializers import ABCSerializer

class ABCViewSet(ImportExportModelViewSet):
    queryset = ABC.objects.all()
    serializer_class = ABCSerializer
    # if filename is not provided, the view name will be used as the filename
    filename = 'ABC'
    # renderer classes used to render your content. will determine the file type of the download
    renderer_classes = (JSONParser, )
    parser_classes = (MultiPartParser, )
    # parser classes used to parse the content of the uploaded file
    file_content_parser_classes = (JSONParser, )

Some third party packages that offer media type support:

from rest_framework import routers

from .views import ABCViewSet

router = routers.ImportExportRouter()
router.register(r'abc', ABCViewSet)

urlpatterns = router.urls


To download a json file you can go to the url /abc/?format=json. The format query parameter specifies the media type you want your response represented in. To download an xml file, your url would be /abc/?format=xml. For this to work, make sure you have the respective renderers to render your response.


To create model instances from a file, upload a file to the url /abc/. Make sure the content of the file can be parsed by the parsers specified in the file_content_parser_classes or else it will return a HTTP_415_UNSUPPORTED_MEDIA_TYPE error.

For sample file examples you can upload, check the assets folder

For more examples on how to use the viewsets or generic views, check the test application

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for djangorestframework-files, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size djangorestframework_files-1.0.1-py2.py3-none-any.whl (7.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size djangorestframework-files-1.0.1.tar.gz (5.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page