django - 在simple_tag的参数中使用filter

时间:2011-09-23 05:31:11

标签: python django

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

这是一个例子。 mysum是标记。 myincrease是过滤器。 foobar是一个变量,我想将foobar|myincrease传递给mysum

模板:

{% mysum foobar|myincrease 1 2 %}

给出错误:

TemplateSyntaxError at /

Caught VariableDoesNotExist while rendering: Failed lookup for key [foobar|myincrease] in ...

标签:

@register.simple_tag
def mysum(a, b, c):
    return a + b + c

过滤器:

@register.filter
def myincrease(num):
    return num + 1

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

我认为在compile_filter装饰器实现中调用类似simple_tag的内容就可以了。

1 个答案:

答案 0 :(得分:1)

虽然故障单中似乎没有提及,但看起来https://code.djangoproject.com/ticket/13956修复了对标记的位置参数添加了过滤器支持。您可以在https://github.com/django/django/commit/8137027f处看到提交 - 位置参数上名为parse_bits的新compile_filter()函数。

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