いくつかの変数 {{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}}の'image'フィールドがある場合:
{% 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>
このように、両方の背景がアクティブになりますが、内側が失敗すると外側のみが表示されます。
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 %}