https://github.com/jamstooks/django-s3-folder-storage
Quick extension of django-storages' S3BotoStorage to allow separate media and static folders within a bucket.
https://github.com/jamstooks/django-s3-folder-storage
Last synced: about 1 month ago
JSON representation
Quick extension of django-storages' S3BotoStorage to allow separate media and static folders within a bucket.
- Host: GitHub
- URL: https://github.com/jamstooks/django-s3-folder-storage
- Owner: jamstooks
- License: bsd-3-clause
- Created: 2012-07-03T19:57:15.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2017-03-27T15:41:03.000Z (about 8 years ago)
- Last Synced: 2025-03-31T12:06:40.351Z (about 1 month ago)
- Language: Python
- Size: 23.4 KB
- Stars: 149
- Watchers: 7
- Forks: 26
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# django-s3-folder-storage
[](https://travis-ci.org/jamstooks/django-s3-folder-storage)
[](https://codeclimate.com/github/jamstooks/django-s3-folder-storage)Quick extension of django-storages' [S3BotoStorage](http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html) to allow separate folders for uploaded and static media within an S3 bucket.
## Overview
Many of my sites use the same configuration: **static** files are stored in `//s3.amazonaws.com//static/` and **uploaded** files are stored somewhere under `//s3.amazonaws.com//media/`. Instead of extending S3BotoStorage in every project I decided to build a package. The names of those folders are configurable in `settings.py`.
## Installation
Use `pip` to install from PyPI:
pip install django-s3-folder-storage
Add `s3_folder_storage` to your settings.py file:
INSTALLED_APPS = (
...
's3_folder_storage',
...
)## Configuration
You are essentially using `django-storages` for S3 hosting, so you will be using their settings. The two settings that are specific to `django-s3-folder-storage` are `DEFAULT_S3_PATH` and `STATIC_S3_PATH`.
Here's an example:
# Creds
AWS_ACCESS_KEY_ID = {{ your key id here }}
AWS_SECRET_ACCESS_KEY = {{ your secret key here }}
AWS_STORAGE_BUCKET_NAME = {{ your bucket name here }}
# Uploaded Media Folder
DEFAULT_FILE_STORAGE = 's3_folder_storage.s3.DefaultStorage'
DEFAULT_S3_PATH = "media"
MEDIA_ROOT = '/%s/' % DEFAULT_S3_PATH
MEDIA_URL = '//s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME
# Static media folder
STATICFILES_STORAGE = 's3_folder_storage.s3.StaticStorage'
STATIC_S3_PATH = "static"
STATIC_ROOT = "/%s/" % STATIC_S3_PATH
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'## Troubleshooting
Depending on how you have your buckets configured and if you want to use SSL,
you may need to use something like the following:MEDIA_URL = 'https://%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = 'https://%s.s3.amazonaws.com/static/' % AWS_STORAGE_BUCKET_NAMEAs a first step, I recommend trying to get the `collectstatic` management
command working within your project:python manage.py collectstatic
You can also run the tests:
python manage.py test s3_folder_storage
to confirm that files are being written to S3
## Contributing
Think this needs something else? To contribute to `django-s3-folder-storage` create a fork on github. Clone your fork, make some changes, and submit a pull request.
Bugs are great contributions too! Feel free to add an issue on github.