Skip to main content

REST framework files

build-status-image coverage-status-image

File download and upload support for Django REST framework.


Overview

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.

Requirements

  • Python (2.7, 3.5, 3.6)

  • Django REST framework (3.4, 3.5, 3.6, 3.7, 3.8)

Installation

Install using pip:

pip install djangorestframework-files

Example

models.py

from django.db import models

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

serializers.py

from rest_framework import serializers

from .models import ABC

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

views.py

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:

urls.py

from rest_framework import routers

from .views import ABCViewSet

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

urlpatterns = router.urls

Downloading

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.

Uploading

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

Metadata

Release files for djangorestframework-files 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for djangorestframework-files 1.1.0
File Size Uploaded
djangorestframework-files-1.1.0.tar.gz 5.4 kB Details

Release files / djangorestframework-files-1.1.0.tar.gz

Download URL djangorestframework-files-1.1.0.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e327371d019077162024f994c8d0d14c046109191a59b8716a3336bb11db4a93
BLAKE2b-256 checksum
How to use checksums
a8211e2bb47a377c5f0d8c90e7c560cd2f5a29cac325b061c2375e0ea494f82d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page