Django 更新的媒体URL未反映在ImageField URL中
我正试图从AmazonS3上的文件服务转移到AmazonCloudFront,所以我更新了我的Django 更新的媒体URL未反映在ImageField URL中,django,amazon-s3,django-storage,Django,Amazon S3,Django Storage,我正试图从AmazonS3上的文件服务转移到AmazonCloudFront,所以我更新了我的设置.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.amazon
设置.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/'
但不在我的模型的图像字段上
:
>>> design.image.url
'https://bucketname.s3.amazonaws.com/media/images/designs/etc/etc'
有什么好处?旧信息仍然存储在哪里?如何清除它?哎呀,原来
文件字段。url
属性没有使用媒体url
。根据:
FieldFile.url
一个只读属性,通过调用基础存储类的URL()方法来访问文件的相对URL
在我的例子中,底层存储类是由django storages
提供的S3BotoStorage
。如所述,这以前不受支持,但现在可以通过将以下内容添加到settings.py
:
AWS_S3_CUSTOM_DOMAIN = 'd2ynhpzeiwwiom.cloudfront.net'
现在它就像一个符咒:
>>> design.image.url
u'https://d2ynhpzeiwwiom.cloudfront.net/media/images/designs/etc/etc'
你重新启动服务器了吗?我想出来了--马上回答我自己