我正在尝试使用http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html来提供静态文件和上传的媒体,但我不确定这是否可能。有没有我遗漏的记录方式?另外,我会假设(希望)您可以为每个存储桶配置一个单独的存储桶,但我找不到任何相关信息。
问问题
1471 次
1 回答
9
是的,这可以通过同时配置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
为此自定义存储类的路径。
STATICFILES_STORAGE = 'dotted.path.to.storage.S3StaticStorage'
如果您想更改其他设置,例如AWS_QUERYSTRING_AUTH
, AWS_S3_CUSTOM_DOMAIN
,AWS_PRELOAD_METADATA
等,那么您也可以在这个子类中更改它们。
于 2013-08-30T17:19:18.333 回答