Sac*_*hin 11 django amazon-s3 sorl-thumbnail
我在我的django项目中使用sorl缩略图时出现了一个非常奇怪的错误,该项目使用S3作为媒体文件.我已按照此答案/sf/answers/899405531/中的指示完成了我的设置,实际上所有其他媒体文件都是正确生成的.
但对于通过sorl缩略图生成的图像,我得到了这样的网址
这个问题很奇怪,因为它将S3存储路径附加到图像网址,但它之间没有添加/ media /.如果你检查
https://he-s3.s3.amazonaws.com/media/cache/6f/cb/6fcb83175cb63f754fba9facec5dda7f.jpg
图像实际上存在于那里,但由于网址生成错误,我得到了一个破碎的图像.在设置文件中,我使用s3boto声明了DEFAULT_FILE_STORAGE并且它包含
S3_URL = 'http://he-s3.s3-website-ap-southeast-1.amazonaws.com'
MEDIA_URL = S3_URL + '/media/'
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么sorl缩略图中的路径不包含媒体.
任何帮助表示赞赏.
更新
事实上,这个问题并没有得到解决.我做的是我清除了缩略图中的KVStore并清除了所有数据库.我很高兴,因为我认为问题已经解决,我现在正在获得正确的网址.但后来我刷新了页面,我又弄错了网址.我不明白发生了什么,如果我清除了缩略图db,它会显示一次正确的url,然后再次显示错误的url.
Aro*_*fis 31
我敢打赌,你正在使用这样的东西:
MediaS3BotoStorage = lambda: S3BotoStorage(location='media')
Run Code Online (Sandbox Code Playgroud)
但是这会导致sorl-thumbnail出现问题,因为它使用类名将存储类序列化为缓存.稍后当它反序列化时,它实例化为S3BotoStorage()而没有location参数.这就是为什么它第一次为你工作,但后来失败了.
您可以使用完整的类而不是工厂来修复它:
class MediaS3BotoStorage(S3BotoStorage):
location = 'media'
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
2416 次 |
| 最近记录: |