1

テキストをフォーマットするpythonメソッドがテンプレートによってレンダリングできるフィルター値を設定できる変数としてdjangoフィルターを使用できるかどうか疑問に思っています

フィルターの通常の動作は次のようになります

{{ html_text | 安全な}}または{{plain_text | 改行 }}

フィルター 'safe'/'linebreaks' の値を変数に設定し、このようにレンダリングしたい

{{ テキスト | フィルター変数 }}

オンラインで調査しましたが、理解できませんでした。助けていただければ幸いです。

4

3 に答える 3

0

私はクリス・プラットが言ったことを支持しますが、私は次のようにします:

from django.template import defaultfilters

@register.filter
def apply_filter(value, filter):
    return getattr(defaultfilters, filter)(value)

そうすれば、どのフィルターでも機能します。

于 2012-05-02T21:23:15.670 に答える
0

それはできませんが、パラメーターを受け入れるカスタム フィルターを作成することはできます。

from django.template import defaultfilters

@register.filter
def apply_filter(value, filter):
    if filter == 'safe':
       return defaultfilters.safe(value)
    if filter == 'linebreaks':
       return defaultfilters.linebreaks(value)
    else:
       # You might want to raise an exception here, but for example purposes
       # I'll just return the value unmodified
       return value

次に、テンプレートで次のようにします。

{{ text|apply_filter:filter_variable }}
于 2012-05-02T21:16:16.907 に答える
0

これは、いくつかのフィルターがある場合に機能します。

{% ifequal filter_variable 1 %}{{ text|safe }}{% endifequal %}
{% ifequal filter_variable 2 %}{{ text|linebreaks }}{% endifequal %}
{% ifequal filter_variable 3 %}{{ text|yourfilter }}{% endifequal %}
于 2012-05-02T21:16:49.260 に答える