Skip to main content

Django Aliyun OSS (Object Storage Service) storage v2, compatible with Django 5.1+

Project description

Django AliCloud OSS Storage V2

django-oss-storage-v2 provides a Django AliCloud OSS file storage, compatible with Django 5.1+.

Features

  • Django file storage for AliCloud OSS
  • Django static file storage for AliCloud OSS
  • Works in Python 2 & 3
  • Supports Django 5.1+

Installation

$ pip install django-oss-storage-v2

for Django < 5.1

  • Add 'django_oss_storage' to your INSTALLED_APPS setting
  • Set your DEFAULT_FILE_STORAGE setting to "django_oss_storage.backends.OssMediaStorage"
  • Set your STATICFILES_STORAGE setting to "django_oss_storage.backends.OssStaticStorage"
  • Configure your AliCloud OSS settings (Refer below).

Storage settings

Use the following settings for file storage.

STATICFILES_STORAGE = 'django_oss_storage.backends.OssStaticStorage'

DEFAULT_FILE_STORAGE = 'django_oss_storage.backends.OssMediaStorage'

Authentication settings

Use the following settings to authenticate with AliCloud OSS.

# AliCloud access key ID
OSS_ACCESS_KEY_ID = <Your Access Key ID>

# AliCloud access key secret
OSS_ACCESS_KEY_SECRET = <Your Access Key Secret>

OSS settings

For public or public-read buckets, storage urls will be bucket_name.endpoint/key format

For private buckets, storage urls will be signed url. The expires time can be set by OSS_EXPIRE_TIME as environment variable or as Django settings. The default value for OSS_EXPIRE_TIME is 30 days.

OSS_EXPIRE_TIME = <Expire Time in Seconds>

# The name of the bucket to store files in
OSS_BUCKET_NAME = <Your bucket name>

# The URL of AliCloud OSS endpoint
# Refer https://www.alibabacloud.com/help/zh/doc-detail/31837.htm for OSS Region & Endpoint
OSS_ENDPOINT = <Your access endpoint>

for Django < 5.1

  • Add 'django_oss_storage' to your INSTALLED_APPS setting
  • Set your STORAGE setting as below.
STORAGES = {
    "default": {
        "BACKEND": "django_oss_storage.backends.OssMediaStorage",
        "OPTIONS": {
            "access_key_id": <Your Access Key ID>,
            "access_key_secret": <Your Access Key Secret>,
            "bucket_name": <Your bucket name>,
            "endpoint": <Your access endpoint>,
            "expire_time": <Expire Time in Seconds>,
        }
    },
    "staticfiles": {
        "BACKEND": "django_oss_storage.backends.OssStaticStorage",
        "OPTIONS": {
            "access_key_id": <Your Access Key ID>,
            "access_key_secret": <Your Access Key Secret>,
            "bucket_name": <Your bucket name>,
            "endpoint": <Your access endpoint>,
            "expire_time": <Expire Time in Seconds>,
        }
    }
}

File storage settings

Use the following settings to configure AliCloud OSS file storage.

# The default location for your project
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# The default location for your media files
# In both cases, your media files will be put into OSS://<your_bucket>/media/
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_ROOT = "/media/"

# Your can use this MEDIA_URL in your django templates
MEDIA_URL = "http://<your-bucket>.<your-endpoint>.aliyuncs.com/media/"
# Or your custom domain MEDIA_URL
MEDIA_URL = "http://<your-custom-domain>/media/"

Staticfiles storage settings

All of the file storage settings are available for the staticfiles storage.

# The default location for your static files
# In both case, your static files will be put into OSS://<your_bucket>/static/
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_ROOT = "/static/"

# Your can use this STATIC_URL in your django templates
STATIC_URL = 'http://<your-bucket>.<your-endpoint>.aliyuncs.com/static/'
# Or your custom domain STATIC_URL
STATIC_URL = "http://<your-custom-domain>/static/"

staticfiles provides command 'collectstatic'. Run following command to collect all sub-folder 'static' of each app and upload to STATIC_URL.

$ python manage.py collectstatic

Testing

First set the required AccessKeyId, AccessKeySecret, endpoint and bucket information for the test through environment variables (Do not use the bucket for the production environment). Take the Linux system for example:

$ export OSS_ACCESS_KEY_ID=<AccessKeyId>
$ export OSS_ACCESS_KEY_SECRET=<AccessKeySecret>
$ export OSS_BUCKET_NAME=<bucket>
$ export OSS_ENDPOINT=<endpoint>

Support and announcements

Downloads and bug tracking can be found at the main project website.

License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-oss-storage-v2-2.0.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_oss_storage_v2-2.0.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file django-oss-storage-v2-2.0.0.tar.gz.

File metadata

  • Download URL: django-oss-storage-v2-2.0.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.11.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.16

File hashes

Hashes for django-oss-storage-v2-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7a5ad91ff8b634bde9d18e3f18a5e687b56ed937b7f022a4a7926e6207730c15
MD5 2b5bc0ce8ca46940c2eb0ed7c379e56c
BLAKE2b-256 648a01d305f287f3160d0ff999c5bb941ad855e5790137b4da1b05e34b73a419

See more details on using hashes here.

File details

Details for the file django_oss_storage_v2-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: django_oss_storage_v2-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.11.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.16

File hashes

Hashes for django_oss_storage_v2-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69f2977cb5c0223ade5ed73e2f22c113ece19c435d852b4f7e853d0af810ade4
MD5 ccc484ef1fa2c28d715f0a8f7ab22907
BLAKE2b-256 f04a9088cc2855659a31759652a4dcf9c8ff7336839db3f76fd8bbbee2c24fb1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page