############# File wrappers ############# .. module:: django_downloadview.files A view return :class:`~django_downloadview.response.DownloadResponse` which itself carries a file wrapper. Here are file wrappers distributed by Django and django-downloadview. ***************** Django's builtins ***************** `Django itself provides some file wrappers`_ you can use within ``django-downloadview``: * :class:`django.core.files.File` wraps a file that live on local filesystem, initialized with a path. ``django-downloadview`` uses this wrapper in :doc:`/views/path`. * :class:`django.db.models.fields.files.FieldFile` wraps a file that is managed in a model. ``django-downloadview`` uses this wrapper in :doc:`/views/object`. * :class:`django.core.files.base.ContentFile` wraps a bytes, string or unicode object. You may use it with :doc:`VirtualDownloadView `. **************************** django-downloadview builtins **************************** ``django-downloadview`` implements additional file wrappers: * :class:`StorageFile` wraps a file that is managed via a storage (but not necessarily via a model). :doc:`/views/storage` uses this wrapper. * :class:`HTTPFile` wraps a file that lives at some (remote) location, initialized with an URL. :doc:`/views/http` uses this wrapper. * :class:`VirtualFile` wraps a file that lives in memory, i.e. built as a string. This is a convenient wrapper to use in :doc:`/views/virtual` subclasses. ********************** Low-level IO utilities ********************** `django-downloadview` provides two classes to implement file-like objects whose content is dynamically generated: * :class:`~django_downloadview.io.TextIteratorIO` for generated text; * :class:`~django_downloadview.io.BytesIteratorIO` for generated bytes. These classes may be handy to serve dynamically generated files. See :doc:`/views/virtual` for details. .. tip:: **Text or bytes?** (formerly "unicode or str?") As `django-downloadview` is meant to serve files, as opposed to read or parse files, what matters is file contents is preserved. `django-downloadview` tends to handle files in binary mode and as bytes. ************* API reference ************* StorageFile =========== .. autoclass:: StorageFile :members: :undoc-members: :show-inheritance: :member-order: bysource HTTPFile ======== .. autoclass:: HTTPFile :members: :undoc-members: :show-inheritance: :member-order: bysource VirtualFile =========== .. autoclass:: VirtualFile :members: :undoc-members: :show-inheritance: :member-order: bysource BytesIteratorIO =============== .. autoclass:: django_downloadview.io.BytesIteratorIO :members: :undoc-members: :show-inheritance: :member-order: bysource TextIteratorIO ============== .. autoclass:: django_downloadview.io.TextIteratorIO :members: :undoc-members: :show-inheritance: :member-order: bysource .. rubric:: Notes & references .. target-notes:: .. _`Django itself provides some file wrappers`: https://docs.djangoproject.com/en/3.0/ref/files/file/