Добавить статический ресурс в функцию фильтра шаблонов

Я хочу динамически добавлять иконки из моего статического 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
Вернуться на верх