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¶
- class django_downloadview.views.http.HTTPDownloadView(**kwargs)¶
Bases:
BaseDownloadViewProxy files that live on remote servers.
- url = ''¶
URL to download (the one we are proxying).
- request_kwargs = {}¶
Additional keyword arguments for request handler.
- get_request_factory()¶
Return request factory to perform actual HTTP request.
Default implementation returns
requests.get()callable.
- get_request_kwargs()¶
Return keyword arguments for use with
get_request_factory().Default implementation returns
request_kwargs.
- get_file()¶
Return wrapper which has an
urlattribute.