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}}の'image'フィールドがある場合:

{% 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

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 に答える