Skip to main content

Content Disposition

PyPI version Run linter and tests Codecov

A library that allows easy management of 'Content-Disposition' details of HTTP responses.

So far it provides:

Installation

  1. Install using pip:
pip install content-disposition

Usage

Use the rfc5987_content_disposition function to set an HTTP response's 'Content-Type' field in any endpoint, e.g.:

# within views.py

from django.http import FileResponse
from rest_framework import viewsets
from rest_framework.decorators import action

from content_disposition import rfc5987_content_disposition

class MyViewSet(viewsets.ModelViewSet):
    ...

    @action(
        detail=True,
        methods="get",
        url_path=r"download",
    )
    def download_route(self, request, pk=None):
        """
        Assuming that self.get_object() returns a model defining
        'name = models.CharField(...)', 'file = models.FileField(...)' and 'mime = models.CharField(...)'
        whereas 'mime' represents the correct mime_type related to 'file'
        """
        instance = self.get_object()

        response = FileResponse(
            instance.file,
            content_type=instance.mime,
        )
        response["Content-Disposition"] = rfc5987_content_disposition(instance.name)

        return response
    ...

Run tests in PyCharm

The package comes with a Django test app to verify functionalities in a realistic environment. To locally run the provided test cases, e.g. in your IntelliJ IDEA, you can:

  1. Configure the interpreter
    1. Go to File -> Settings -> Project: content-disposition -> Python interpreter
    2. Add a Virtualenv Environment and configure the correct Location and check Inherit global site-packages:
      1. python interpreter config
  2. Configure the Django framework
    1. Go to File -> Settings -> Languages & Frameworks -> Django
    2. Check Enable Django Support and configure the correct project root, settings and manage script location:
      1. django_config
  3. Install the requirements by running: pip install -r requirements.txt in a terminal within your venv
  4. Right click on the tests folder and select Run 'Test:'
  5. The "Run" window should list all (successfully) executed test cases:
    1. test_results

Metadata

Release files for content-disposition 1.2.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 content-disposition 1.2.0
File Size Uploaded
content-disposition-1.2.0.tar.gz 3.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for content-disposition 1.2.0
File Interpreter ABI Platform
content_disposition-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 7.9 kB

Release files / content-disposition-1.2.0.tar.gz

Download URL content-disposition-1.2.0.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5f7d955f4d9c0c85563de09ca21f9ebaac960f107d9a0f905728ac5961ec42c9
BLAKE2b-256 checksum
How to use checksums
b5de38bfa1e87141810c024ee2ddd237cc145ee75641a9cd8bb69b438ca565f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / content_disposition-1.2.0-py3-none-any.whl

Download URL content_disposition-1.2.0-py3-none-any.whl
Size 4.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfc04dd7ad3e6b32a0b61e9f8e290e7711348c6bcb799b45e9b994752df14085
BLAKE2b-256 checksum
How to use checksums
b44454de305c65984c6ec39799212a117d2131cb375337eeab9c5d0326434576
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

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