3

我有一个模板来根据一些变量 {{var}}.jpg 显示图像如果某种方式对于 var 的特定值,没有相应的图像,我想显示一个后备图像以达到审美目的。

我如何实现这一目标?

我已经定义了一个静态路径,我正在使用

{% load static %}

<img src="{% get_static_prefix %}img/{{var}}.jpg"> 

显示我的图像。

4

4 回答 4

8

为此编写一个自定义过滤器

{% 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)
于 2012-07-02T04:45:03.083 回答
2

如果 {{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 %}
于 2012-07-02T04:59:41.073 回答
2

如果变量不是具有关联图片的对象的实例(意味着{{ 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>

这样,两个背景都处于活动状态,但是当内部失败时,只能看到外部。

于 2016-07-01T15:01:29.387 回答
1

一个想法是检查视图中是否存在 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 %}
于 2012-07-02T00:03:09.317 回答