Package: django-storages-afix
InstallationInstalling from PyPI is as easy as doing:pip install django-storagesIf 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 addstoragesto yourINSTALLED_APPSand setDEFAULT_FILE_STORAGEto 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.Aboutdjango-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.HistoryThis 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.Found a Bug? Something Unsupported?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 theproject issue page.DocumentationThe original documentation for django-storages is located athttps://django-storages.readthedocs.org/.
Stay tuned for forthcoming documentation updates.ContributingCheck for open issuesat the project
issue page or open a new issue to start a discussion about a feature or bug.Fork thedjango-storages repository on GitHubto 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 toAUTHORS.django-storages change log1.6.0 (XXXX-XX-XX)Breaking:Remove backends deprecated in v1.5.1 (#280)Deprecation:The undocumentedgs.GSBotoStoragebackend. See the newgcloud.GoogleCloudStorageorapache_libcloud.LibCloudStoragebackends instead. (#236)Add a new backend,gcloud.GoogleCloudStoragebased on thegoogle-cloudbindings. (#236thanks @scjody)Pass in the location constraint when auto creating a bucket (#257,#258thanks @mattayes)Add support for readingAWS_SESSION_TOKENandAWS_SECURITY_TOKENfrom the environment
toS3Boto3StorageandS3BotoStorage. (#283thanks @bxm156)Fix Boto3 non-ascii filenames on Python 2.7 (#216,#217thanks @AGASS007)Fixcollectstatictimezone handling in and addget_modified_timetoS3BotoStorage(#290)Add support for Django 1.11 (#295thanks @jdufresne)Addprojectkeyword support to GCS inLibCloudStoragebackend (#269thanks @slightfoot)Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding in
thes3boto3backend (issue#263pr#264thanks @ldng)The Dropbox backend now properly translates backslashes in Windows paths into forward slashes (e52a127)1.5.2 (2017-01-13)Actually useSFTP_STORAGE_HOSTinSFTPStoragebackend (#204thanks @jbittel)FixS3Boto3Storageto avoid race conditions in a multi-threaded WSGI environment (#238thanks @jdufresne)Fix trying to localize a naive datetime whensettings.USE_TZisFalseinS3Boto3Storage.modified_time.
(thanks to @tomchuk and @piglei for the reports and the patches,#235,#234)Fix automatic bucket creation inS3Boto3StoragewhenAWS_AUTO_CREATE_BUCKETisTrue(#196thanks @linuxlewis)Improve the documentation for the S3 backends (thanks to various contributors!)1.5.1 (2016-09-13)Breaking:Drop support for Django 1.7 (#185)Deprecation:hashpath, image, overwrite, mogile, symlinkorcopy, database, mogile, couchdb.
See (issue #202) to discuss maintenance going forwardUse a fixedmtimeargument forGzipFileinS3BotoStorageandS3Boto3Storageto ensure
a stable output for gzipped filesUse.putfileobjinstead of.putinS3Boto3Storageto use the transfer manager,
allowing files greater than 5GB to be put on S3 (#194,#201)UpdateS3Boto3Storagefor Django 1.10 (#181) (get_modified_timeandget_accessed_time) thanks @JshWrightFix bad kwarg name inS3Boto3StoragewhenAWS_PRELOAD_METADATAisTrue(#189,#190) thanks @leonsmith1.5.0 (2016-08-02)Add new backendS3Boto3Storage(#179) MASSIVE THANKS @mbarrienAdd astrictoption toutils.setting(#176) thanks @ZuluProTests, documentation, fixing.closeforSFTPStorage(#177) thanks @ZuluProTests, documentation, add.readlinesforFTPStorage(#175) thanks @ZuluProTests and documentation forDropBoxStorage(#174) thanks @ZuluProFixMANIFEST.into not ship.pycfiles. (#145) thanks @fladiEnable CI testing of Python 3.5 and fix test failure from api change (#171) thanks @tnir1.4.1 (2016-04-07)Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding
in thes3botobackend. Compressable types such asapplication/javascriptwill still be gzipped.
PR#122thanks @cambonfFixDropBoxStorage.existscheck and addDropBoxStorage.url(#127) thanks @zuckAddGS_HOSTsetting (with a default ofGSConnection.DefaultHost) to fixGSBotoStorage.
Issue#124. Fixed in#125. Thanks @patgmiller @dcgoss.1.4 (2016-02-07)This package is now released on PyPI asdjango-storages. Please update your requirements files todjango-storages==1.4.1.3.2 (2016-01-26)Fix memory leak from not closing underlying temp file ins3botobackend (#106) thanks @kmmbvnrAllow easily specifying a custom expiry time when generating a url forS3BotoStorage(#96) thanks @mattbrianconCheck for bucket existence when the empty path (‘’) is passed tostorage.existsinS3BotoStorage-
this prevents a crash when runningcollectstatic-con Django 1.9.1 (#112) fixed in#116thanks @xblitz1.3.1 (2016-01-12)A few Azure Storage fixes [pass the content-type to Azure, handle chunked content, fixurl] (#45) thanks @erlingboAdd support for a Dropbox (dropbox) storage backend, thanks @ZuluPro (#76)Various fixes to theapache_libcloudbackend [return the number of bytes asked for by.read, make.namenon-private, don’t
initialize to an emptyBytesIOobject] thanks @kaedroho (#55)Fix multi-part uploads ins3botobackend not respectingAWS_S3_ENCRYPTION(#94) thanks @andersontepAutomatically gzip svg files thanks @comandrei (#100)1.3 (2015-08-14)Breaking:Drop Support for Django 1.5 and Python 2.6Breaking:Remove previously deprecated mongodb backendBreaking:Remove previously deprecatedparse_ts_extendedfrom s3boto storageAdd support for Django 1.8+ (#36)AddAWS_S3_PROXY_HOSTandAWS_S3_PROXY_PORTsettings for s3boto backend (#41)Fix Python3K compat issue in apache_libcloud (#52)Fix Google Storage backend not respectingGS_IS_GZIPPEDsetting (#51,#60) thanks @stmosRename FTP_nameattribute tonamewhich is what the DjangoFileapi is expecting (#70)PutStorageMixinfirst in inheritance to maintain backwards compat with older versions of Django (#63)1.2.3 (2015-03-14)Variety of FTP backend fixes (fixexists, addmodified_time, remove call to non-existent function) (#26)Apparently the year changed to 20151.2.2 (2015-01-28)Remove always show all warnings filter (#21)Release package as a wheelAvoid resource warning during install (#20)MadeS3BotoStoragedeconstructible (previously onlyS3BotoStorageFilewas deconstructible) (#19)1.2.1 (2014-12-31)Deprecation:Issue warning aboutparse_ts_extendedDeprecation:mongodb backend - django-mongodb-engine now ships its own storage backendFixstorage.modified_timecrashing on new files whenAWS_PRELOAD_METADATA=True(#11,#12,#14)1.2 (2014-12-14)Breaking:Remove legacy S3 storage (#1)Breaking:Remove mosso files backend (#2)Add text/javascript mimetype to S3BotoStorage gzip allowed defaultsAdd support for Django 1.7 migrations in S3BotoStorage and ApacheLibCloudStorage (#5,#8)Python3K (3.3+) now available for S3Boto backend (#4)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)Fix syntax for Python3 with pull-request#91Support pushing content type from File object to GridFS with pull-request#90Support passing a region to the libcloud driver with pull-request#86Handle trailing slash paths fixes#188fixed by pull-request#85Use a SpooledTemporaryFile to conserve memory in S3BotoFile pull-request#69Guess content-type for S3BotoStorageFile the same way that _save() in S3BotoStorage doesPass headers and response_headers through from url to generate_url in S3BotoStorage pull-request#65Added AWS_S3_HOST, AWS_S3_PORT and AWS_S3_USE_SSL settings to specify host, port and is_secure in pull-request#66Everything Below Here Was Previously Released on PyPi under django-storages1.1.8 (2013-03-31)Fixes#156regarding date parsing, ValueError when running collectstaticProper handling of boto dev version parsingMade SFTP URLs accessible, now uses settings.MEDIA_URL instead of sftp://1.1.7 (2013-03-20)Listing of huge buckets on S3 is now prevented by using the prefix argument to boto’s list() methodInitial support for Windows Azure StorageSwitched to useing boto’s parse_ts date parser getting last modified info when using S3boto backendFixed key handling in S3boto and Google Storage backendsAccount for lack of multipart upload in Google Storage backendFixed seek() issue when using AWS_IS_GZIPPED by darkness51 with pull-request#50Improvements to S3BotoStorage and GSBotoStorage1.1.6 (2013-01-06)Merged many changes from Jannis Leidel (mostly regarding gzipping)Fixed tests by Ian LewisAdded support for Google Cloud Storage backend by Jannis LeidelUpdated license file by Dan Loewenherz, fixes#133with pull-request#44Set Content-Type header for use in upload_part_from_file by Gerardo CurielPass the rewind parameter to Boto’s set_contents_from_file method by Jannis Leidel with pull-request#45Fix for FTPStorageFile close() method by Mathieu Comandon with pull-request#43Minor refactoring by Oktay Sancak with pull-request#48Ungzip on download based on Content-Encoding by Gavin Wahl with pull-request#46Add support for S3 server-side encryption by Tobias McNulty with pull-request#17Add an optional setting to the boto storage to produce protocol-relative URLs, fixes#1051.1.5 (2012-07-18)Merged pull request#36from freakboy3742 Keith-Magee, improvements to Apache Libcloud backend and docsMerged pull request#35from atodorov, allows more granular S3 access settingsAdd support for SSL in Rackspace Cloudfiles backendFixed the listdir() method in s3boto backend, fixes#57Added base url tests for safe_join in s3boto backendMerged pull request#20from alanjds, fixed SuspiciousOperation warning if AWS_LOCATION ends with ‘/’Added FILE_BUFFER_SIZE setting to s3boto backendMerged pull request#30from pendletongp, resolves#108,#109and#110Updated the modified_time() method so that it doesn’t require dateutil. fixes#111Merged pull request#16from chamal, adds Apache Libcloud backendWhen preloading the S3 metadata make sure we reset the files key during saving to prevent stale metadataMerged pull request#24from tobias.mcnulty, fixes bug where s3boto backend returns modified_time in wrong time zoneFixed HashPathStorage.location to no longer use settings.MEDIA_ROOTRemove download_url from setup file so PyPI dist is used1.1.4 (2012-01-06)Added PendingDeprecationWarning for mosso backendMerged pull request#13from marcoala, addsSFTP_KNOWN_HOST_FILEsetting to SFTP storage backendMerged pull request#12from ryankask, fixes HashPathStorage tests that delete remote mediaMerged pull request#10from key, adds support for django-mongodb-engine 0.4.0 or later, fixes GridFS file deletion bugFixed S3BotoStorage performance problem calling modified_time()Added deprecation warning for s3 backend, refs#40Fixed CLOUDFILES_CONNECTION_KWARGS import error, fixes#78Switched to sphinx documentation, set official docs up onhttp://django-storages.rtfd.org/HashPathStorage uses self.exists now, fixes#831.1.3 (2011-08-15)Created this lovely change logFixed#89: broken StringIO import in CloudFiles backendMergedpull request #5: HashPathStorage path bug