Мне нужно отрендерить изображение adobe_illustrator_file_logo.png , если file.url
заканчивается .ai
.
Но если file.url
заканчивается другим завершением, например, .png
для exmaple, я буду отображать изображение объекта.
Я ищу документацию, но, видимо, нет endswith
встроенный фильтр.
Так что я закончил играть с фильтрами ifequals
и slice
.
Логика такая же: «, если строка идентична последним 3 буквам, сделать это ».
Однако, это не работает, так как ничего не отображается.
<td>
{% ifequal cart_item.file.url|default:""|slice:"-3" ".ai" %}
<img src="{% static 'img/admin/adobe_illustrator_file_logo.png' %}"
alt=""
class="float-left rounded custom_image">
{% endifequal %}
</td>
Примечание:
<p>{{ cart_item.file.url }}</p>
Рендеринг HTML :
<p>/media/files/working_precisely.ai</p>
Также, adobe_illustrator_file_logo.png правильно отображает, если он помещен за пределы, если условие.
Обновление 1:
Создан мой собственный фильтр, но ошибка получения:
TemplateSyntaxError at / cart /
заканчивается 2 аргументами, 1 предоставляется
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter(is_safe=False)
@stringfilter
def endswith(value, suffix):
return value.endswith(suffix)
Template
{% if cart_item.file.url|endswith: ".ai" %}
<img src="{% static 'img/admin/adobe_illustrator_file_logo.png' %}"
alt=""
class="float-left rounded custom_image">
{% endif %}