正如标题所说。我在模板中形成了图片网址。有时图像不存在。我有一个默认图像在这种情况下显示。
但是如何在模板级别处理此案例。也许写一个过滤器?还有其他方法吗?
到目前为止:
...
{% for m in movies %}
<img width="54" height="74" src="/site_media/images/{{ m.id }}.jpg"></img>
{% endfor %}
...
答案 0 :(得分:2)
是的,您可以编写自己的过滤器,将媒体路径解析为绝对路径,然后查看该位置是否有文件。
但是,我强烈建议不要这样做,因为在最坏的情况下,每次请求都会读取磁盘未知次数。如果您有多台服务器,则每台服务器都需要拥有所有映像的副本。如果图像是用户上载或在系统运行时创建的,则需要分发它们。如果确实沿着这条路线前进,可以通过使用标准缓存机制缓存查找结果来改善这一点。
想一想,为什么不使用ImageField将图像存储在模型上?从您的示例中,我看起来每个主键都有一个映像,因此除非您有其他一些约束,否则使用ImageField是有意义的。如果您将此字段设为可选字段,则可以执行以下操作:
<img src="{{ m.get_image_url|default:"/site_media/images/missing_image.jpg" }}" />