我正在尝试从在Amazon S3上提供文件转移到Amazon CloudFront,因此我更新了settings.py
。以前,我有这个:
S3_URL = 'http://{}.s3.amazonaws.com'.format(AWS_STORAGE_BUCKET_NAME)
STATIC_URL = S3_URL + STATIC_DIRECTORY
MEDIA_URL = S3_URL + MEDIA_DIRECTORY
我更新了如下:
#S3_URL = 'http://{}.s3.amazonaws.com'.format(AWS_STORAGE_BUCKET_NAME)
S3_URL = 'http://d2ynhpzeiwwiom.cloudfront.net'
在控制台中,设置已更新:
>>> from django.conf import settings
>>> settings.MEDIA_URL
'http://d2ynhpzeiwwiom.cloudfront.net/media/'
但不是我模特的ImageField
:
>>> design.image.url
'https://bucketname.s3.amazonaws.com/media/images/designs/etc/etc'
是什么给出的?哪些旧信息仍然存储,如何将其清除?
答案 0 :(得分:0)
哎呀,结果FileField.url
属性不使用MEDIA_URL
。根据{{3}}:
<强> FieldFile.url 强>
通过调用底层Storage类的url()方法来访问文件的相对URL的只读属性。
就我而言,基础存储类由S3BotoStorage
提供django-storages
。正如the Django docs所述,以前不支持,但现在可以通过将以下内容添加到settings.py
来完成:
AWS_S3_CUSTOM_DOMAIN = 'd2ynhpzeiwwiom.cloudfront.net'
现在它就像一个魅力:
>>> design.image.url
u'https://d2ynhpzeiwwiom.cloudfront.net/media/images/designs/etc/etc'