InvalidImageFormatError Exception 源文件似乎不是图像

InvalidImageFormatError Exception The source file does not appear to be an image

所以我使用后备默认图像来避免 500 错误,但没有成功。 我不断收到相同的错误 “InvalidImageFormatError:源文件似乎不是图像”。

在我的例子中,我尝试缩略一张不存在的图像。 但是假设如果图像不存在,它应该使用默认的图像作为后备。 有任何想法吗?有人以同样的方式发生并找到了解决方案吗? 就我而言,这是我的代码 {% oscar_thumbnail child_image.original|default:'image/default.png' "450x450" format="WEBP" padding=True as thumb_child %}

我正在从 sorl-thumbnails 迁移,它默认带有 django_oscar for easy_thumbnails。 标签 OSCAR_THUMBNAIL 被 django_oscar 使用,在本例 easy_thumbnails 中,oscar 将其替换为设置中的缩略图。我已经调试了代码,它正在输入 easy_thumb 类 以及......并且参数正确到达。 问题是,当它试图处理的图像不存在时,它不会让我后退。 我有一个包含具有关联图像的产品的数据库,其中许多在我的本地环境中不存在,因为在生产中它们在 s3 中,并且我没有在我的开发环境中为 s3 配置我的设置。但是,嘿,问题是它应该在没有图像时回退,或者存在对物理上不存在的图像的引用。如果它存在,我打算使用它进行回退,但它一直给我错误 500 并且它没有显示页面,我得到了带有异常的 django 页面。哦,我也试过原生的 easy_thumb 标签 ...

有什么想法吗?提前致谢!

问题如下,要使默认过滤器取值,必须将前面的表达式计算为 False,因此它会爆炸,因为没有图像,缩略图无法创建对象,解决方案是制作另一个过滤器来检查图像是否存在于存储中,并且 return 一个布尔值。

{% oscar_thumbnail child_image.original|image_exist|default:'image/default.png' "450x450" format="WEBP" padding=True as thumb_child %}

谢谢。