Django模板:如何将模板变量传递给cut过滤器

9
我正在尝试将模板传递到一个cut过滤器中,类似于这样:
{{ myVariable|cut:"something + templateVariable" }}

我已经尝试过:

{{ myVariable|cut:"something"|add:templateVariable }}

并且

{{ myVariable|cut:"something {{ templateVariable }}" }}

但是这些并不起作用。

这是否有可能做到呢?

1个回答

18

可以使用 with标签来创建一个临时变量,以实现该功能:

{% with myFilter="something"|add:templateVariable %}
    {{ myVariable|cut:myFilter }}
{% endwith %}

或者在 Django 1.2 及更早的版本中:

{% with "something"|add:templateVariable as myFilter %}
    {{ myVariable|cut:myFilter }}
{% endwith %}

Add不支持字符串和整数的拼接,但是你可以很容易地创建一个模板过滤器,将其转换为字符串,例如:

from django import template

register = template.Library()

@register.filter
def to_unicode(mixed):
    return unicode(mixed)

以下模板标签表达式将被允许:some_int|to_unicode|add:'foo'


2
我发现它不起作用是因为你不能使用“add”过滤器将字符串与整数变量连接起来。我只需创建一个自定义模板标签来处理它,并使用你编写的代码使事情变得更简单。 - zentenk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接