Django模板将模板变量传递到剪切过滤器

zen*_*enk 6 python django django-templates

我试图将模板传递给切割过滤器,类似这样

{{ myVariable|cut:"something + templateVariable" }}
Run Code Online (Sandbox Code Playgroud)

我试过了:

{{ myVariable|cut:"something"|add:templateVariable }}
Run Code Online (Sandbox Code Playgroud)

{{ myVariable|cut:"something {{ templateVariable }}" }}
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.

这可能吗?

jpi*_*pic 12

它应该使用带有标记的临时变量:

{% with myFilter="something"|add:templateVariable %}
    {{ myVariable|cut:myFilter }}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)

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

{% with "something"|add:templateVariable as myFilter %}
    {{ myVariable|cut:myFilter }}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)

添加不支持字符串和int的连接,但您可以轻松地创建一个转换为字符串的模板过滤器,例如:

from django import template

register = template.Library()

@register.filter
def to_unicode(mixed):
    return unicode(mixed)
Run Code Online (Sandbox Code Playgroud)

会允许这样的模板标签表达some_int|to_unicode|add:'foo'.

  • 我发现它不起作用,因为您不能使用`add`过滤器将字符串与整数变量连接在一起。我只是创建了一个客户模板标签来处理该问题,并使用您编写的代码使事情变得更简单 (2认同)