Skip to main content

A DRF app upload files easily

Project description

DRF File Upload

A reusable django library to handle file upload with the Django Rest Framework.

It provides views, serializers and models for simplifying file uploads and their model association in your RESTful application.

How it works

  1. Upload the file using this library multi-part APIs:

    POST https://example.com/api/upload/
    # A multipart request with a `file` field that contains your file
  2. If upload is complete, an unique identifier for that file is returned, along an URL for accessing it:

    {
       "url": "https://example.com/media/upload/file.png",
       "uuid: "1ad29aa9-d470-442d-a5a3-5922e7ce0182"
    }
  3. Use the uuid in your APIs for associating the uploaded file with your django model instance:

    POST https://example.com/api/foo/
    {
       [...],
       "my-file-attribute": "1ad29aa9-d470-442d-a5a3-5922e7ce0182"
    }
  4. If you want to update the resource but leave the file unchanged, simply pass the file url as value:

    PUT https://example.com/api/foo/2/
    {
        [...],
        "my-file-attribute": "https://example.com/media/upload/file.png"
    }

Quick start

  1. Add “drf_file_upload” to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'drf_file_upload',
    ]
  2. Include the polls URLconf in your project urls.py like this:

    path('upload/', include('drf_file_upload.urls')),

This will add both separate authenticated and anonymous users to file upload endpoints. Todo: add single view examples

  1. Add the UploadedFileField to your serializers todo

  2. Run python manage.py migrate to create the file upload models.

  3. Run the cleanup management command deleted_expired_uploaded_files in a cron task or add a celery task

TODO: Improve https://docs.djangoproject.com/en/3.1/intro/reusable-apps/

TODOs & IDEAS

  • Add support for Image file

  • check if DRF dedicated fields can be exploited

  • lots of config (e.g. permission_classes)

  • check if clean_uploaded_files can be called somewhere else to avoid save method override

  • Documentation!

  • Check if the file field can be set globally for all model FileFields

  • Add better spectacle openapi docs

  • Add missing tests

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

drf_file_upload-0.1.5.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drf_file_upload-0.1.5-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file drf_file_upload-0.1.5.tar.gz.

File metadata

  • Download URL: drf_file_upload-0.1.5.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for drf_file_upload-0.1.5.tar.gz
Algorithm Hash digest
SHA256 7ff3235bed9801dffcf295d6d37564a33c2fe7c9ae6829e177ef20d23988c52e
MD5 0a7b1456841d23f93afa2b7861252663
BLAKE2b-256 61a71310130ad94a99f7f1971ac4b56dc955961303c2aaf268822f5febe3ed4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for drf_file_upload-0.1.5.tar.gz:

Publisher: cd.yml on zupit-it/zupit-django

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file drf_file_upload-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for drf_file_upload-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 024ab1b939b39110f3c8dad778e1ab1ff8f9366d0097cc3478b9d4426973a92c
MD5 4d88ccb0897d4f79cb1afdc63375ae19
BLAKE2b-256 6a62f4817265cb89c7704d2528eb86a54c64a90f69db60c955b314937c6a0e7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for drf_file_upload-0.1.5-py3-none-any.whl:

Publisher: cd.yml on zupit-it/zupit-django

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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