带有标签的django模板自定义过滤器

时间:2020-07-08 20:37:41

标签: django django-templates

我有dict个包含图片的列表。密钥是id中的journey。现在,我想获取基于ID的图片列表,因此我写了一个过滤器:

@register.filter
def dict_value(dict, key):
    return dict.get(key)

现在我要使用此过滤器,但是如何使用?这就是我所做的:

{% for journey in journeys %}
    ...
    {% with imagelist={{ images|dictvalue:{{journey.id}} }} %}
        {% if imagelist %}
        <img class="card-img-top" data-src="" style="height: 225px; width: 100%; display: block;" src="{{imagelist.0.url}}" data-holder-rendered="true">
        {% else %}
        <img class="card-img-top" data-src="" style="height: 225px; width: 100%; display: block;" src="https://via.placeholder.com/348x225.png" data-holder-rendered="true">
        {% endif %}
    {% endwith %}
    ...
{% endfor %}

为了进行测试,如果列表不为空,我想显示第一张图像。

但是我对with-tag有疑问。如何正确执行?

1 个答案:

答案 0 :(得分:0)

在模板过滤器中,您不需要使用多余的双大括号,您可以将其写为:

{% with imagelist=images|dictvalue:journey.id %}

话虽这么说,在模板中实现业务逻辑通常不是一个好主意。通常在视图中执行此操作。