我有一个模板来根据一些变量 {{var}}.jpg 显示图像如果某种方式对于 var 的特定值,没有相应的图像,我想显示一个后备图像以达到审美目的。
我如何实现这一目标?
我已经定义了一个静态路径,我正在使用
{% load static %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
显示我的图像。
我有一个模板来根据一些变量 {{var}}.jpg 显示图像如果某种方式对于 var 的特定值,没有相应的图像,我想显示一个后备图像以达到审美目的。
我如何实现这一目标?
我已经定义了一个静态路径,我正在使用
{% load static %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
显示我的图像。
为此编写一个自定义过滤器。
{% if var|image_exists %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
image_exists
是自定义过滤器。有一条简单的线路将为您工作。
from django.core.files.storage import default_storage
default_storage.exists(your_image_path)
如果 {{var}} 中只有图片 url。然后你可以简单地这样做:
{% if var %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
或者如果有 {{var}} 的“图像”字段,那么:
{% if var.image %}
<img src="{% get_static_prefix %}img/{{var}}.jpg">
{% else %}
<img src="{% get_static_prefix %}img/fallback.jpg">
{% endif %}
如果变量不是具有关联图片的对象的实例(意味着{{ var.image }}
不起作用),而是{{ var }}
简单地指示静态图像的名称:
而不是使用
<img src="{% get_static_prefix %}img/{{var}}.jpg">
做
<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>
这样,两个背景都处于活动状态,但是当内部失败时,只能看到外部。
一个想法是检查视图中是否存在 var_x.jpg(我假设您可以这样做)。如果 var_x.jpg 不存在,只需将其添加到字典中: {"var_x":"missing","var_y":"missing"} 等形式的 "missing_images" 并将字典传递给您的视图,然后在模板中您只需:
{% if missing_images.var_x %} display fallback
{% else %} display var_x.jpg
{% endif %}