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' \
'/benoitbryon/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:
django_downloadview.views.base.BaseDownloadView
Proxy files that live on remote servers.
-
url
= u''¶ 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
url
attribute.
-