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.


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)

  • Django REST framework (3.4, 3.6)

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

Project details


Download files

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

Source Distribution

djangorestframework-files-1.0.1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

djangorestframework_files-1.0.1-py2.py3-none-any.whl (7.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file djangorestframework-files-1.0.1.tar.gz.

File metadata

File hashes

Hashes for djangorestframework-files-1.0.1.tar.gz
Algorithm Hash digest
SHA256 76a031917f01d31585733a874e8a83ce3702935bdd5f9e5e99b12f66092353d9
MD5 4b56760cc3891e343735ab6128c22fcc
BLAKE2b-256 b803d43ba2437d1c37f7e6d1ee7952f1845ec103ef6950f021ed180170c54ecd

See more details on using hashes here.

File details

Details for the file djangorestframework_files-1.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for djangorestframework_files-1.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b4a325e59a9c755728589ca70642eca463ea2c30e34a97cdb94936577979a75a
MD5 eefcbc7b6fb262e881e40e1e5c4ed17e
BLAKE2b-256 0758fe94d8d0a4496675d33a96d43cd92540855f701b5603677c636f67b6cf77

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page