Django application provide custom storage uses S3 and Compressor.
Project description
django-custom-storage 
GitHub

Test

Check Demo Project
- Check the demo repo on GitHub
Requirements
- Python 3.8+ supported.
- Django 3.2+ supported.
Setup
- Install from pip:
pip install django-custom-storage
- Modify
settings.pyby adding the app toINSTALLED_APPS:
INSTALLED_APPS = [
# ...
"compressor",
"custom_storage",
# ...
]
- Finally, Modify
settings.pyby adding the needed configurations:
# ...other setting...
# Media files (Uploaded Images, Documents, Video, Audio)
MEDIA_ROOT = '/var/opt/your_project_name/mediaroot/'
# Static files (Fonts, CSS, JavaScript, Icons, Theme's Images)
STATIC_URL = '/static/'
STATIC_ROOT = '/var/cache/your_project_name/staticroot/'
# Example: cdn.your_project_bucket_name.com
AWS_STORAGE_BUCKET_PREFIX = "cdn"
AWS_STORAGE_BUCKET_NAME = "your_project_bucket_name"
AWS_STORAGE_BUCKET_TLD = "com"
# Access Key ID & Secret Access Key
AWS_ACCESS_KEY_ID = 'YOUR_PROJECT_AWS_ACCESS_KEY_ID'
AWS_SECRET_ACCESS_KEY = 'YOUR_PROJECT_AWS_SECRET_ACCESS_KEY'
# ...other setting...
# START - Compress and Upload on S3
import os
import sys
import datetime
# Add option to FORCE_LOCAL_STORAGE
# https://www.mslinn.com/django/1300-django-aws-control.html
if "--force-local-storage" in sys.argv:
print("AWS datastore disabled; using local storage for assets instead.")
FORCE_LOCAL_STORAGE = True
sys.argv.remove("--force-local-storage")
else:
print("Using AWS datastore for assets.")
FORCE_LOCAL_STORAGE = False
if not FORCE_LOCAL_STORAGE:
DEFAULT_FILE_STORAGE = 'custom_storage.storage.MediaRootCachedS3Storage'
if not os.getenv('RUN_COMPRESS', False):
STATICFILES_STORAGE = 'custom_storage.storage.StaticRootCachedS3Storage'
else:
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ROOT = STATIC_ROOT
AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_PREFIX}.{AWS_STORAGE_BUCKET_NAME}.{AWS_STORAGE_BUCKET_TLD}"
STATIC_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/static/"
MEDIA_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/media/"
AWS_DEFAULT_ACL = 'public-read'
AWS_QUERYSTRING_AUTH = False
AWS_FILE_EXPIRE = 200
AWS_PRELOAD_METADATA = True
two_months = datetime.timedelta(days=61)
date_two_months_later = datetime.date.today() + two_months
expires = date_two_months_later.strftime("%A, %d %B %Y 20:00:00 GMT")
AWS_S3_OBJECT_PARAMETERS = {
'Expires': expires,
'CacheControl': 'max-age=%d' % (int(two_months.total_seconds()),),
}
COMPRESS_CSS_HASHING_METHOD = None
COMPRESS_CSS_FILTERS = [
'compressor.filters.css_default.CssAbsoluteFilter',
# 'compressor.filters.css_default.CssRelativeFilter',
'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_JS_FILTERS = [
'compressor.filters.jsmin.JSMinFilter',
]
COMPRESS_OUTPUT_DIR = 'compressed_static'
COMPRESS_STORAGE = 'custom_storage.storage.StaticRootCachedS3Storage'
# END - Compress and Upload on S3
Run Example Project
git clone --depth=50 --branch=django-custom-storage https://github.com/DLRSP/example.git DLRSP/example
cd DLRSP/example
python manage.py runserver
Now browser the app @ http://127.0.0.1:8000
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django-custom-storage-0.3.0.tar.gz.
File metadata
- Download URL: django-custom-storage-0.3.0.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cea5667d84786b6304a24f7e9ba09ab5fda5dc610f36dd5aaf2275e042d0f2e6
|
|
| MD5 |
01cb1e7b444596ec3b18fdfe18ea4593
|
|
| BLAKE2b-256 |
95a6aed1168f2b0477f84c500d957ceddaaa848cd24bd218c66dbde5dfc5ea95
|
File details
Details for the file django_custom_storage-0.3.0-py2.py3-none-any.whl.
File metadata
- Download URL: django_custom_storage-0.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cad2a93281fe8461a1b9098a31583074109c849dbbaa5d95f29726cf6455097
|
|
| MD5 |
27b9186bdcdbf5978cd2a1d2d8c9394b
|
|
| BLAKE2b-256 |
72e22401f471f9e0354795a6551417a964b90133fe32de58dc2cac9ababb0e59
|