Добавить статический ресурс в функцию фильтра шаблонов
Я хочу динамически добавлять иконки из моего статического dir при использовании тега шаблона, но я не хочу добавлять их в HTML шаблона, а использую фильтр:
{% for field in form %}
<td>{{ field|format_ }}</td>
{% endfor %}
и format_
выглядят следующим образом:
@register.filter(name = "format_")
def format_(field):
if field.widget_type == "clearablefile":
f = f"""{field}<button class="btn btn-danger"><img src="{{% static 'images/x-square.svg' %}}"></button>"""
return mark_safe(f)
return field
Я попробовал это с тем же синтаксисом, который я использовал бы в шаблоне, но просто экранировал: <img src="{{% static 'images/x-square.svg' %}}">
, который просто показывает именно это открытым текстом, а не иконку на шаблоне. Какой способ здесь правильный?
Используйте функцию static
следующим образом:
# Older Django <3.0 (also deprecated in 2.0):
from django.contrib.staticfiles.templatetags.staticfiles import static
# Django 3.0+
from django.templatetags.static import static
iconUrl = static('images/x-square.svg')
Ваш код будет таким:
@register.filter(name = "format_")
def format_(field):
if field.widget_type == "clearablefile":
iconUrl = static('images/x-square.svg')
f = f"""{field}<button class="btn btn-danger"><img src="{iconUrl}"></button>"""
return mark_safe(f)
return field