===============
.. image:: https://img.shields.io/pypi/v/django-storages.svg :target: https://pypi.python.org/pypi/django-storages :alt: PyPI Version
.. image:: https://travis-ci.org/jschneier/django-storages.svg?branch=master :target: https://travis-ci.org/jschneier/django-storages :alt: Build Status
Installing from PyPI is as easy as doing::
pip install django-storages
If you'd prefer to install from source (maybe there is a bugfix in master that hasn't been released yet) then the magic incantation you are looking for is::
pip install -e 'git+https://github.com/jschneier/django-storages.git#egg=django-storages'
Once that is done add storages
to your INSTALLED_APPS
and set DEFAULT_FILE_STORAGE
to the
backend of your choice. If, for example, you want to use the boto3 backend you would set::
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
There are also a number of settings available to control how each storage backend functions, please consult the documentation for a comprehensive list.
django-storages is a project to provide a variety of storage backends in a single library.
This library is usually compatible with the currently supported versions of Django. Check the trove classifiers in setup.py to be sure.
This repo began as a fork of the original library under the package name of django-storages-redux and became the official successor (releasing under django-storages on PyPI) in February of 2016.
I suspect that a few of the storage engines in backends/ have been unsupported for quite a long time. I personally only really need the S3Storage backend but welcome bug reports (and especially) patches and tests for some of the other backends.
Issues are tracked via GitHub issues at the project issue page <https://github.com/jschneier/django-storages/issues>
_.
The original documentation for django-storages is located at https://django-storages.readthedocs.org/. Stay tuned for forthcoming documentation updates.
#. Check for open issues <https://github.com/jschneier/django-storages/issues>
at the project
issue page or open a new issue to start a discussion about a feature or bug.
#. Fork the django-storages repository on GitHub <https://github.com/jschneier/django-storages>
to start making changes.
#. Add a test case to show that the bug is fixed or the feature is implemented
correctly.
#. Bug me until I can merge your pull request. Also, don't forget to add
yourself to AUTHORS
.
1.6.0 (XXXX-XX-XX)
#280
_)gs.GSBotoStorage
backend. See the new gcloud.GoogleCloudStorage
or apache_libcloud.LibCloudStorage
backends instead. (#236
_)gcloud.GoogleCloudStorage
based on the google-cloud
bindings. (#236
_ thanks @scjody)#257
, #258
thanks @mattayes)AWS_SESSION_TOKEN
and AWS_SECURITY_TOKEN
from the environment
to S3Boto3Storage
and S3BotoStorage
. (#283
_ thanks @bxm156)#216
, #217
thanks @AGASS007)collectstatic
timezone handling in and add get_modified_time
to S3BotoStorage
(#290
_)#295
_ thanks @jdufresne)project
keyword support to GCS in LibCloudStorage
backend (#269
_ thanks @slightfoot)s3boto3
backend (issue #263
pr #264
thanks @ldng)e52a127
_).. #217: https://github.com/jschneier/django-storages/pull/217 .. #216: https://github.com/jschneier/django-storages/issues/216 .. #283: https://github.com/jschneier/django-storages/pull/283 .. #280: https://github.com/jschneier/django-storages/pull/280 .. #257: https://github.com/jschneier/django-storages/issues/257 .. #258: https://github.com/jschneier/django-storages/pull/258 .. #290: https://github.com/jschneier/django-storages/pull/290 .. #295: https://github.com/jschneier/django-storages/pull/295 .. #269: https://github.com/jschneier/django-storages/pull/269 .. #263: https://github.com/jschneier/django-storages/issues/263 .. #264: https://github.com/jschneier/django-storages/pull/264 .. _e52a127: https://github.com/jschneier/django-storages/commit/e52a127523fdd5be50bb670ccad566c5d527f3d1 .. #236: https://github.com/jschneier/django-storages/pull/236
1.5.2 (2017-01-13)
SFTP_STORAGE_HOST
in SFTPStorage
backend (#204
_ thanks @jbittel)S3Boto3Storage
to avoid race conditions in a multi-threaded WSGI environment (#238
_ thanks @jdufresne)settings.USE_TZ
is False
in S3Boto3Storage.modified_time
.
(thanks to @tomchuk and @piglei for the reports and the patches, #235
, #234
)S3Boto3Storage
when AWS_AUTO_CREATE_BUCKET
is True
(#196
_ thanks @linuxlewis).. #204: https://github.com/jschneier/django-storages/pull/204 .. #238: https://github.com/jschneier/django-storages/pull/238 .. #234: https://github.com/jschneier/django-storages/issues/234 .. #235: https://github.com/jschneier/django-storages/pull/235 .. _#196: https://github.com/jschneier/django-storages/pull/196
1.5.1 (2016-09-13)
#185
_)issue #202
_) to discuss maintenance going forwardmtime
argument for GzipFile
in S3BotoStorage
and S3Boto3Storage
to ensure
a stable output for gzipped files.putfileobj
instead of .put
in S3Boto3Storage
to use the transfer manager,
allowing files greater than 5GB to be put on S3 (#194
, #201
)S3Boto3Storage
for Django 1.10 (#181
_) (get_modified_time
and get_accessed_time
) thanks @JshWrightS3Boto3Storage
when AWS_PRELOAD_METADATA
is True
(#189
, #190
) thanks @leonsmith.. issue #202: https://github.com/jschneier/django-storages/issues/202 .. #201: https://github.com/jschneier/django-storages/pull/201 .. #194: https://github.com/jschneier/django-storages/issues/194 .. #190: https://github.com/jschneier/django-storages/pull/190 .. #189: https://github.com/jschneier/django-storages/issues/189 .. #185: https://github.com/jschneier/django-storages/pull/185 .. _#181: https://github.com/jschneier/django-storages/pull/181
1.5.0 (2016-08-02)
S3Boto3Storage
(#179
_) MASSIVE THANKS @mbarrienstrict
option to utils.setting
(#176
_) thanks @ZuluPro.close
for SFTPStorage
(#177
_) thanks @ZuluPro.readlines
for FTPStorage
(#175
_) thanks @ZuluProDropBoxStorage
(#174
_) thanks @ZuluProMANIFEST.in
to not ship .pyc
files. (#145
_) thanks @fladi#171
_) thanks @tnir.. #145: https://github.com/jschneier/django-storages/pull/145 .. #171: https://github.com/jschneier/django-storages/pull/171 .. #174: https://github.com/jschneier/django-storages/pull/174 .. #175: https://github.com/jschneier/django-storages/pull/175 .. #177: https://github.com/jschneier/django-storages/pull/177 .. #176: https://github.com/jschneier/django-storages/pull/176 .. _#179: https://github.com/jschneier/django-storages/pull/179
1.4.1 (2016-04-07)
s3boto
backend. Compressable types such as application/javascript
will still be gzipped.
PR #122
_ thanks @cambonfDropBoxStorage.exists
check and add DropBoxStorage.url
(#127
_) thanks @zuckGS_HOST
setting (with a default of GSConnection.DefaultHost
) to fix GSBotoStorage
.
Issue #124
. Fixed in #125
. Thanks @patgmiller @dcgoss... #122: https://github.com/jschneier/django-storages/pull/122 .. #127: https://github.com/jschneier/django-storages/pull/127 .. #124: https://github.com/jschneier/django-storages/issues/124 .. #125: https://github.com/jschneier/django-storages/pull/125
1.4 (2016-02-07)
django-storages
. Please update your requirements files to
django-storages==1.4
.1.3.2 (2016-01-26)
s3boto
backend (#106
_) thanks @kmmbvnrS3BotoStorage
(#96
_) thanks @mattbrianconstorage.exists
in S3BotoStorage
-
this prevents a crash when running collectstatic -c
on Django 1.9.1 (#112
) fixed in #116
thanks @xblitz.. #106: https://github.com/jschneier/django-storages/pull/106 .. #96: https://github.com/jschneier/django-storages/pull/96 .. #112: https://github.com/jschneier/django-storages/issues/112 .. #116: https://github.com/jschneier/django-storages/pull/116
1.3.1 (2016-01-12)
url
] (#45
__) thanks @erlingbodropbox
) storage backend, thanks @ZuluPro (#76
_)apache_libcloud
backend [return the number of bytes asked for by .read
, make .name
non-private, don't
initialize to an empty BytesIO
object] thanks @kaedroho (#55
_)s3boto
backend not respecting AWS_S3_ENCRYPTION
(#94
_) thanks @andersontep#100
_).. _: https://github.com/jschneier/django-storages/pull/45 .. #76: https://github.com/jschneier/django-storages/pull/76 .. #55: https://github.com/jschneier/django-storages/pull/55 .. #94: https://github.com/jschneier/django-storages/pull/94 .. _#100: https://github.com/jschneier/django-storages/pull/100
1.3 (2015-08-14)
parse_ts_extended
from s3boto storage#36
__)AWS_S3_PROXY_HOST
and AWS_S3_PROXY_PORT
settings for s3boto backend (#41
_)#52
)GS_IS_GZIPPED
setting (#51
_, #60
) thanks @stmos_name
attribute to name
which is what the Django File
api is expecting (#70
_)StorageMixin
first in inheritance to maintain backwards compat with older versions of Django (#63
_).. : https://github.com/jschneier/django-storages/pull/36 .. #41: https://github.com/jschneier/django-storages/pull/41 .. #52: https://github.com/jschneier/django-storages/issues/52 .. : https://github.com/jschneier/django-storages/pull/51 .. #60: https://github.com/jschneier/django-storages/pull/60 .. #70: https://github.com/jschneier/django-storages/pull/70 .. _#63: https://github.com/jschneier/django-storages/pull/63
1.2.3 (2015-03-14)
exists
, add modified_time
, remove call to non-existent function) (#26
_).. _#26: https://github.com/jschneier/django-storages/pull/26
1.2.2 (2015-01-28)
#21
_)#20
__)S3BotoStorage
deconstructible (previously only S3BotoStorageFile
was deconstructible) (#19
_).. #21: https://github.com/jschneier/django-storages/pull/21 .. __: https://github.com/jschneier/django-storages/issues/20 .. #19: https://github.com/jschneier/django-storages/pull/19
1.2.1 (2014-12-31)
parse_ts_extended
storage.modified_time
crashing on new files when AWS_PRELOAD_METADATA=True
(#11
, #12
__, #14
).. #11: https://github.com/jschneier/django-storages/pull/11 __ https://github.com/jschneier/django-storages/issues/12 .. #14: https://github.com/jschneier/django-storages/pull/14
1.2 (2014-12-14)
#1
_)#2
_)#5
, #8
)#4
_).. #8: https://github.com/jschneier/django-storages/pull/8 .. #5: https://github.com/jschneier/django-storages/pull/5 .. #4: https://github.com/jschneier/django-storages/pull/4 .. #1: https://github.com/jschneier/django-storages/issues/1 .. _#2: https://github.com/jschneier/django-storages/issues/2
NOTE: Version 1.1.9 is the first release of django-storages after the fork. It represents the current (2014-12-08) state of the original django-storages in master with no additional changes. This is the first release of the code base since March 2013.
1.1.9 (2014-12-08)
#91
_#90
_#86
_#188
fixed by pull-request #85
#69
_#65
#66
.. #91: https://bitbucket.org/david/django-storages/pull-request/91/ .. #90: https://bitbucket.org/david/django-storages/pull-request/90/ .. #86: https://bitbucket.org/david/django-storages/pull-request/86/ .. #188: https://bitbucket.org/david/django-storages/issue/188/s3boto-_clean_name-is-broken-and-leads-to .. #85: https://bitbucket.org/david/django-storages/pull-request/85/ .. #69: https://bitbucket.org/david/django-storages/pull-request/69/ .. #66: https://bitbucket.org/david/django-storages/pull-request/66/ .. #65: https://bitbucket.org/david/django-storages/pull-request/65/
Everything Below Here Was Previously Released on PyPi under django-storages
1.1.8 (2013-03-31)
#156
_ regarding date parsing, ValueError when running collectstatic.. _#156: https://bitbucket.org/david/django-storages/issue/156/s3boto-backend-valueerror-time-data-thu-07
1.1.7 (2013-03-20)
#50
.. _#50: https://bitbucket.org/david/django-storages/pull-request/50/
1.1.6 (2013-01-06)
#133
with pull-request #44
#45
#43
_#48
_#46
_#17
_#105
_.. #133: https://bitbucket.org/david/django-storages/issue/133/license-file-refers-to-incorrect-project .. #44: https://bitbucket.org/david/django-storages/pull-request/44/ .. #45: https://bitbucket.org/david/django-storages/pull-request/45/ .. #43: https://bitbucket.org/david/django-storages/pull-request/43/ .. #48: https://bitbucket.org/david/django-storages/pull-request/48/ .. #46: https://bitbucket.org/david/django-storages/pull-request/46/ .. #17: https://bitbucket.org/david/django-storages/pull-request/17/ .. #105: https://bitbucket.org/david/django-storages/issue/105/add-option-to-produce-protocol-relative
1.1.5 (2012-07-18)
#36
_ from freakboy3742 Keith-Magee, improvements to Apache Libcloud backend and docs#35
_ from atodorov, allows more granular S3 access settings#57
_#20
_ from alanjds, fixed SuspiciousOperation warning if AWS_LOCATION ends with '/'#30
from pendletongp, resolves #108
, #109
and #110
#111
#16
_ from chamal, adds Apache Libcloud backend#24
_ from tobias.mcnulty, fixes bug where s3boto backend returns modified_time in wrong time zone.. #36: https://bitbucket.org/david/django-storages/pull-request/36/ .. #35: https://bitbucket.org/david/django-storages/pull-request/35/ .. #57: https://bitbucket.org/david/django-storages/issue/57 .. #20: https://bitbucket.org/david/django-storages/pull-request/20/ .. #30: https://bitbucket.org/david/django-storages/pull-request/30/ .. #108: https://bitbucket.org/david/django-storages/issue/108 .. #109: https://bitbucket.org/david/django-storages/issue/109 .. #110: https://bitbucket.org/david/django-storages/issue/110 .. #111: https://bitbucket.org/david/django-storages/issue/111 .. #16: https://bitbucket.org/david/django-storages/pull-request/16/ .. _#24: https://bitbucket.org/david/django-storages/pull-request/24/
1.1.4 (2012-01-06)
#13
_ from marcoala, adds SFTP_KNOWN_HOST_FILE
setting to SFTP storage backend#12
_ from ryankask, fixes HashPathStorage tests that delete remote media#10
_ from key, adds support for django-mongodb-engine 0.4.0 or later, fixes GridFS file deletion bug#40
_#78
#83
_.. #13: https://bitbucket.org/david/django-storages/pull-request/13/a-version-of-sftp-storage-that-allows-you .. #12: https://bitbucket.org/david/django-storages/pull-request/12/hashpathstorage-tests-deleted-my-projects .. #10: https://bitbucket.org/david/django-storages/pull-request/10/support-django-mongodb-engine-040 .. #40: https://bitbucket.org/david/django-storages/issue/40/deprecate-s3py-backend .. #78: https://bitbucket.org/david/django-storages/issue/78/import-error .. #83: https://bitbucket.org/david/django-storages/issue/6/symlinkorcopystorage-new-custom-storage
1.1.3 (2011-08-15)
#89
_: broken StringIO import in CloudFiles backendpull request #5
_: HashPathStorage path bug.. _#89: https://bitbucket.org/david/django-storages/issue/89/112-broke-the-mosso-backend .. _pull request #5: https://bitbucket.org/david/django-storages/pull-request/5/fixed-path-bug-and-added-testcase-for
Version | Tag | Published |
---|---|---|
1.5.3a0 | 5yrs ago |