将静态资源添加到模板过滤功能
add static ressource to template filter function
我想在使用模板标签时从我的静态目录动态添加图标,但我不想将它们添加到模板中 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
我想在使用模板标签时从我的静态目录动态添加图标,但我不想将它们添加到模板中 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