0

所以我使用后备默认图像来避免 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 使用,oscar 将其替换为设置中的缩略图,在本例中为 easy_thumbnails。我已经调试了代码,它很好地进入了easy_thumb类......并且参数正确到达。问题是,当它试图处理的图像不存在时,它不会让我退缩。我有一个包含相关图像的产品的数据库,其中许多在我的本地环境中不存在,因为在生产中它们在 s3 中,并且我没有在我的开发环境中为 s3 配置我的设置。但是,嘿,问题是它应该在没有图像时回退,或者有对物理上不存在的图像的引用。如果它存在,我打算使用它进行后备,但它一直给我错误 500 并且它没有向我显示页面,我得到了 django 页面,但有例外。哦,我也试过原生的easy_thumb标签......

有任何想法吗?提前致谢!

在此处输入图像描述

4

1 回答 1

0

问题如下,对于默认过滤器取值之前的表达式必须被评估为 False,因为这个原因它爆炸了,因为没有图像,缩略图无法创建对象,解决方案是制作另一个过滤器检查图像是否存在于存储中,并返回一个布尔值。

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

谢谢。

于 2020-11-24T14:53:24.760 回答