django - 在simple_tag的参数中使用filter

jsz*_*jsz 5 python django

我有一个自定义的简单标签.似乎我不能使用过滤器作为其参数.

这是一个例子.mysum是标签.myincrease是过滤器.foobar是一个变量,我想传递foobar|myincreasemysum.

模板:

{% mysum foobar|myincrease 1 2 %}
Run Code Online (Sandbox Code Playgroud)

给出错误:

TemplateSyntaxError at /

Caught VariableDoesNotExist while rendering: Failed lookup for key [foobar|myincrease] in ...
Run Code Online (Sandbox Code Playgroud)

标签:

@register.simple_tag
def mysum(a, b, c):
    return a + b + c
Run Code Online (Sandbox Code Playgroud)

过滤器:

@register.filter
def myincrease(num):
    return num + 1
Run Code Online (Sandbox Code Playgroud)

我使用其他方法解决了我原来的问题.但我仍然想知道这是出于设计,还是我的错误,还是django的错误,或者被忽视的事情.

我认为compile_filtersimple_tag装饰器实现中调用类似的东西会这样做.

M S*_*lle 1

尽管票证中似乎没有提及,但看起来https://code.djangoproject.com/ticket/13956的修复为标签的位置参数添加了过滤器支持。您可以在https://github.com/django/django/commit/8137027f上查看提交- 在位置参数上parse_bits调用的新函数compile_filter()

另一种解决方法是使用标签{% with %}