结合模板过滤器django

时间:2016-05-10 08:49:37

标签: django templates filter

在我的模板中,我使用多个过滤器,如下所示:

story|force_escape|markdown|nlToBr

我在我的页面中多次使用此流程的过滤器,我想创建一个使用这三个过滤器的过滤器。 有没有办法轻松吃,或者我必须找到每个过滤器的代码并在单个自定义过滤器上重复粘贴?

非常感谢! 道连

2 个答案:

答案 0 :(得分:1)

过滤器只是功能;你可以在自己的过滤器中调用它们。

from ... import ...

@register.filter
def combo(value):
    return force_escape(markdown(nlToBr(value)))

答案 1 :(得分:0)

你可以create your own template filter,通过在Python函数中组合每个过滤器的输出,为你完成整个过程:

from django import template
from django.template.defaultfilters import force_escape, breaklines

register = template.Library()

# Let's say those filters are also here, since they are not
# built-in Django filters... Otherwise import them
@register.filter
def markdown(content):
    pass

@register.filter
def story(content):
    pass

@register.filter
def markdown_escaped(content):
    return story(
         force_escape(markdown(linebreaks(content)))
    )

然后在您的模板中,使用:

{% load yourapp_extra %}
{{ 'my_markdown_string'|markdown_escaped }}