[英]How can I use django-storages for both media and static files?
我試圖用http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html為服務於靜態文件和上傳的媒體,但我不能肯定這是可能的。 有沒有我遺失的文件記錄方式? 另外,我假設(希望)您可以為每個配置單獨的存儲桶,但是我找不到任何信息。
是的,可以通過將DEFAULT_FILE_STORAGE
和STATICFILES_STORAGE
配置為使用S3存儲來實現。 但是,如果您設置
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
那么它們都將使用S3存儲的默認設置,這意味着它們都將使用AWS_STORAGE_BUCKET_NAME
存儲桶。 解決此問題的方法是在項目中創建一個S3BotoStorage
小型子類,該子類對存儲區名稱使用不同的設置。
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage
class S3StaticStorage(S3BotoStorage):
def __init__(self, *args, **kwargs):
kwargs['bucket'] = settings.AWS_STATIC_BUCKET_NAME
super(S3StaticStorage, self).__init__(*args, **kwargs)
然后,您可以將AWS_STATIC_BUCKET_NAME
設置定義為您的靜態存儲桶AWS_STATIC_BUCKET_NAME
設置,並將AWS_STATIC_BUCKET_NAME
更改為此自定義存儲類的路徑。
STATICFILES_STORAGE = 'dotted.path.to.storage.S3StaticStorage'
如果您想更改其他設置,例如AWS_QUERYSTRING_AUTH
, AWS_S3_CUSTOM_DOMAIN
, AWS_PRELOAD_METADATA
等,則也可以在此子類中更改它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.