我有一个模板可以根据变量{{var}} .jpg显示图像 如果以某种方式获得var的特定值,则没有相应的图像,我想显示一个用于审美目的的后备图像。
我如何实现这一目标?
我已经定义了一个静态路径,我正在使用
{% load static %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
显示我的图片。
答案 0 :(得分:5)
为此写一个Custom filter。
{% if var|image_exists %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
image_exists
是自定义过滤器。有一条简单的线路可供您使用。
default_storage.exists(your_image_path)
答案 1 :(得分:2)
如果{{var}}中只有图片网址。然后你可以这样做:
{% if var %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
或者如果{{var}}有'image'字段,那么:
{% if var.image %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
答案 2 :(得分:1)
一个想法是检查视图中是否存在var_x.jpg(我假设您可以这样做)。 如果var_x.jpg不存在,只需将其添加到字典中: &#34; missing_images&#34;形式{&#34; var_x&#34;:&#34;缺少&#34;,&#34; var_y&#34;:&#34;缺少&#34;}等 并将字典传递给您的视图 然后在你需要的模板中:
{% if missing_images.var_x %} display fallback
{% else %} display var_x.jpg
{% endif %}
答案 3 :(得分:1)
如果变量不是与其关联的图片的对象的实例(意味着{{ var.image }}
不起作用),而是{{ var }}
只是表示静态图像的名称:
而不是使用
<img src="{% get_static_prefix %}img/{{var}}.jpg">
DO
<div id="my_image" style="background: url({% get_static_prefix %}img/{{var}}.jpg)"></div>
然后使用备用图片添加包div
,结果为:
<div id="my_backup_image" style="background: url({% get_static_prefix %}img/backup.jpg)">
<div id="my_image" style="background: url({% get_static_prefix %}img/{{var}}.jpg)"></div>
</div>
&#13;
这样,两个背景都是活动的,但是当内部失败时,只能看到外部。