StorageDownloadView

StorageDownloadView serves files given a storage and a path.

Use this view when you manage files in a storage (which is a good practice), unrelated to a model.

Simple example

Given a storage:

from django.core.files.storage import FileSystemStorage


storage = FileSystemStorage()

Setup a view to stream files in storage:

from django_downloadview import StorageDownloadView


static_path = StorageDownloadView.as_view(storage=storage)

The view accepts a path argument you can setup either in as_view or via URLconfs:

from django.conf.urls import patterns, url

from demoproject.storage import views


urlpatterns = patterns(
    '',
    url(r'^static-path/(?P<path>[a-zA-Z0-9_-]+\.[a-zA-Z0-9]{1,4})$',
        views.static_path,
        name='static_path'),
)

Computing path dynamically

Override the StorageDownloadView.get_path() method to adapt path resolution to your needs.

As an example, here is the same view as above, but the path is converted to uppercase:

from django_downloadview import StorageDownloadView


class DynamicStorageDownloadView(StorageDownloadView):
    """Serve file of storage by path.upper()."""
    def get_path(self):
        """Return uppercase path."""
        return super(DynamicStorageDownloadView, self).get_path().upper()


dynamic_path = DynamicStorageDownloadView.as_view(storage=storage)

API reference

class django_downloadview.views.storage.StorageDownloadView(**kwargs)

Bases: django_downloadview.views.path.PathDownloadView

Serve a file using storage and filename.

storage = <django.core.files.storage.DefaultStorage object at 0x4254cd0>

Storage the file to serve belongs to.

path = None

Path to the file to serve relative to storage.

get_path()

Return path of the file to serve, relative to storage.

Default implementation simply returns view’s path attribute.

Override this method if you want custom implementation.

get_file()

Return StorageFile instance.

Read the Docs v: 1.3
Versions
latest
1.3
1.2
1.1
1.0
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.