簡體   English   中英

如何將django-storages用於媒體和靜態文件?

[英]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_STORAGESTATICFILES_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_AUTHAWS_S3_CUSTOM_DOMAINAWS_PRELOAD_METADATA等,則也可以在此子類中更改它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM