Trong settings.py
tôi có:Chỉ vào nhiều xô S3 trong s3boto
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'static.mysite.com'
này được trỏ đến S3 của tôi xô static.mysite.com
và hoạt động tốt khi tôi làm manage.py collectstatic
, nó upload tất cả các file tĩnh để xô tôi. Tuy nhiên, tôi có một xô mà tôi sử dụng cho các mục đích khác nhau và muốn sử dụng trong khu vực nhất định của trang web, ví dụ như nếu tôi có một mô hình như thế này:
class Image(models.Model):
myobject = models.ImageField(upload_to='my/folder')
Bây giờ khi Image.save()
được gọi, nó sẽ vẫn tải tệp lên thùng S3 trong AWS_STORAGE_BUCKET_NAME
, tuy nhiên tôi muốn điều này Image.save()
để trỏ đến một thùng S3 khác. Bất kỳ làm sạch cách thực hiện việc này? Tôi không muốn thay đổi settings.py
trong thời gian chạy cũng như không triển khai bất kỳ thực tiễn nào vi phạm nguyên tắc chính của django, tức là có bộ nhớ phụ trợ dễ thay đổi có thể cắm được.
Tuyệt vời! Bạn đề nghị đặt lớp này ở đâu? – abstractpaper
Một nơi nào đó trong dự án của bạn. Tôi thường có ứng dụng riêng biệt, nơi tôi giữ tất cả mọi thứ cụ thể của dự án. –
ứng dụng cốt lõi, cảm ơn rất nhiều. – abstractpaper