检查图像是否存在 - Django(1.3)

时间:2012-07-01 23:13:03

标签: django django-templates

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

我如何实现这一目标?

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

{% load static %}

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

显示我的图片。

4 个答案:

答案 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,结果为:

&#13;
&#13;
<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;
&#13;
&#13;

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