2016-05-10 3 views
1

を組み合わせ、私は以下のように複数のフィルタを使用します。は私のテンプレートでは、テンプレートフィルタジャンゴ

story|force_escape|markdown|nlToBr 

私は自分のページにフィルタ何度もこの流れを使用して、私はこれらの3つのフィルタを使用するフィルタを作成したいと思います。 簡単に食べる方法はありますか?または、各フィルターのコードを見つけて、単一のカスタムフィルターで貼り付けて戻す必要がありますか?

ありがとうございました! ドリアン

答えて

0

あなたはPythonの関数の内部で、各フィルタの出力を組み合わせることにより、あなたのためにこのプロセス全体を行うだろうと、create your own template filter次のことができます、あなたのテンプレートで

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 }} 
1

フィルタは機能に過ぎません。あなた自身のフィルタの中でそれらを呼び出すことができます。

from ... import ... 

@register.filter 
def combo(value): 
    return force_escape(markdown(nlToBr(value))) 
関連する問題