使用 AWS S3 的 Django-Oscar 正确保存图像

Django-Oscar with AWS S3 save images correctly

我正在使用 django-oscar 和来自 storages S3BotoStorage 库的 S3 存储。我的静态文件存储在我的 s3 存储桶中:

STATIC_URL = "https://s3.amazonaws.com/<my_bucket_name>/static/"

当我 运行 python manage.py collectstatic 时,这些已成功收集,所以我知道我的 S3 权限设置正确。

我的 MEDIA_URL 设置为:

MEDIA_URL = "https://s3.amazonaws.com/<my_bucket_name>/media/"

当我 运行 python manage.py oscar_import_catalogue_images 时,图像被保存到我的 S3 存储桶中,然而,它们被放置在:

<bucket_name>/images/products/2016/02/<image_file>

虽然它们保存在这里,但它们在我的网站上没有正确呈现。

图像呈现为空白 <div>,用引号括起大片空白。

如何才能正确渲染图像,并sorl从 S3 图像正确生成缩略图?

根据我的初步研究,我必须以某种方式编辑 utils.py Importer class 以更改目录。但我不确定这对它们的呈现方式有帮助。有人遇到过这个问题吗?

问题是我使用的 Python 图片库 (PIL) 版本不支持我的图片格式。在我 pip uninstall 编辑 PIL 之后,我添加了必要的支持库,然后重新安装了 PIL。这解决了问题。