django-storages

Pluggable cloud and remote storage backends for Django's file storage API

Library
PyPI
v1.14.6
2,958stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
57/100Fair
Development Activity44
Maintenance4
Community80
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
73/100Good
Architecture76
Code Quality74
Innovation62
Learning Curve80

django-storages is a collection of custom storage backends that plug into Django’s Storage API, letting a Django project swap its default local-filesystem file storage for a cloud or remote target without changing application code. It ships backends for Amazon S3, Google Cloud Storage, Azure Blob Storage, Dropbox, SFTP, FTP, and Apache Libcloud, each implementing the same save/open/url/delete interface Django expects from DEFAULT_FILE_STORAGE.

Because every backend conforms to Django’s existing storage abstraction, model FileField/ImageField uploads, the admin, and any third-party app that reads/writes through django.core.files.storage work unmodified once a backend is configured — only settings change, not application code. The project began as a fork (django-storages-redux) and became the official successor on PyPI in 2016; it remains the de facto standard for object storage in Django projects.

What You Get

  • An S3 backend (storages.backends.s3.S3Storage) built on boto3, supporting custom domains, signed URLs, and object ACLs
  • Backends for Google Cloud Storage and Azure Blob Storage with the same Django Storage interface
  • SFTP and FTP backends for storing files on a remote server without a cloud provider
  • A Dropbox backend and an Apache Libcloud backend covering additional providers through libcloud’s abstraction
  • Drop-in compatibility with Django’s FileField/ImageField, admin file uploads, and django.core.files.storage APIs

Common Use Cases

  • Serving user-uploaded media (avatars, documents, attachments) from S3 or GCS instead of the app server’s local disk
  • Running Django on ephemeral/container infrastructure (Heroku, Kubernetes) where local filesystem storage doesn’t persist across deploys
  • Storing static or media files on Azure Blob Storage for projects hosted on Azure App Service
  • Deploying to a target without cloud storage by writing uploads to a remote server over SFTP/FTP

Under The Hood

Architecture - Each backend in storages/backends/ (s3.py, gcloud.py, azure_storage.py, dropbox.py, sftpstorage.py, ftp.py, apache_libcloud.py) subclasses Django’s Storage base class and implements the required primitives (_open, _save, exists, url, delete, size) against the corresponding provider SDK; storages/base.py and storages/utils.py hold shared setting-resolution and compression helpers used across backends. storages/compress.py provides optional gzip compression for static assets uploaded to S3/GCS. Tech Stack - Pure Python, targeting Django 4.2 through 5.2, with each backend importing its provider’s official SDK as an optional dependency (boto3 for S3, google-cloud-storage for GCS, azure-storage-blob for Azure, paramiko for SFTP, dropbox for Dropbox), so a project only needs to install the SDK for the backend it actually uses. Packaging uses setuptools with dynamic version/readme resolution. Code Quality - The tests/ directory (10 test modules) covers each backend independently, mocking the underlying provider SDK to test URL generation, ACL handling, and file operations without live cloud credentials; the S3 backend in particular (717 lines) has the deepest test coverage given its popularity. The project has had a slowdown in commit activity and open PRs in recent periods, which the health score reflects. API Design - Because every backend exposes the exact same Storage interface Django already defines, adopting django-storages typically requires only a settings-file change (DEFAULT_FILE_STORAGE or the newer STORAGES dict) and provider credentials — no changes to models, views, or templates that already use FileField/ImageField.

Used by 7 apps in this directory

Python
54%
Other

authentik

Authentication · Security

24,980

The self-hosted Identity Provider that replaces Okta, Auth0, and Entra ID with a unified SSO platform supporting SAML, OAuth2/OIDC, LDAP, RADIUS, and WebAuthn.

View details
92
Repo Health
81
Technical
68
Dependency
Built with
Python54%
TypeScript33%
Updated today
Python
68%
Other

Baserow

No Code Platforms · Databases

5,635

Open-source no-code platform to build databases, apps, automations, and AI agents — self-hosted or cloud, with full data ownership.

View details
89
Repo Health
84
Technical
68
Dependency
Built with
Python68%
JavaScript15%
Vue12%
Updated today
Python
51%
MIT

Docs

File Storage · CMS

16,733

Open-source collaborative knowledge platform with real-time editing, AI writing tools, and full self-hosting control — built by the French and German governments.

View details
87
Repo Health
81
Technical
72
Dependency
Built with
Python51%
TypeScript42%
Updated 2 days ago
Python
64%
BSD 3

Flagsmith

Developer Tools · Devops · Ab Testing Experimentation

6,518

Open-source feature flagging, remote config, and A/B/multivariate testing platform for web, mobile, and server-side apps — self-host or use the hosted SaaS.

View details
91
Repo Health
82
Technical
65
Dependency
Built with
Python64%
TypeScript31%
Updated today
HTML
48%
LGPL-2.1

Horilla

Human Resources · ERP

1,330

Open-source HRMS covering recruitment, attendance, payroll, and biometrics in one self-hosted Django application.

View details
88
Repo Health
60
Technical
65
Dependency
Built with
HTML48%
Python35%
JavaScript13%
Updated today
TypeScript
38%
Apache 2.0

Label Studio

AI Development · Data Engineering

28,083

Label Studio is an open-source, multi-type data labeling platform that lets teams annotate images, text, audio, video, and time series data with a configurable XML-based UI and export annotations in formats ready for any ML framework.

View details
93
Repo Health
87
Technical
68
Dependency
Built with
TypeScript38%
JavaScript27%
Python25%
Updated today
Svelte
32%
GPL 3.0

Mathesar

Databases

5,096

Spreadsheet-like interface for your PostgreSQL database — self-hosted, no SQL required, native Postgres access control.

View details
87
Repo Health
80
Technical
72
Dependency
Built with
Svelte32%
TypeScript27%
Python21%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search