HTTPDownloadView

HTTPDownloadView serves a file given an URL., i.e. it acts like a proxy.

This view is particularly handy when:

  • the client does not have access to the file resource, while your Django server does.
  • the client does trust your server, your server trusts a third-party, you do not want to bother the client with the third-party.

Simple example

Setup a view to stream files given URL:

from django_downloadview import HTTPDownloadView


class SimpleURLDownloadView(HTTPDownloadView):
    def get_url(self):
        """Return URL of hello-world.txt file on GitHub."""
        return (
            "https://raw.githubusercontent.com"
            "/jazzband/django-downloadview"
            "/b7f660c5e3f37d918b106b02c5af7a887acc0111"
            "/demo/demoproject/download/fixtures/hello-world.txt"
        )


class GithubAvatarDownloadView(HTTPDownloadView):
    def get_url(self):
        return "https://avatars0.githubusercontent.com/u/235204"


simple_url = SimpleURLDownloadView.as_view()
avatar_url = GithubAvatarDownloadView.as_view()

Base options

HTTPDownloadView inherits from DownloadMixin, which has various options such as basename or attachment.

API reference