7

テンプレートの for ループで使用するために、組み込みの「並べ替え」フィルターのようなイテラブルに適用される Jinja2 のカスタム フィルターを最も効率的に作成するにはどうすればよいですか?

例えば:

{% for item in iterable|customsort(somearg) %}
...
{% endfor %}

一般的なドキュメントについては、 http://jinja.pocoo.org/docs/api/#writing-filtersを参照してください。

4

1 に答える 1

14

他のフィルターを作成するのと同じ方法です。開始するための例を次に示します。

from jinja2 import Environment, Undefined

def custom_sort(iterable, somearg):
    if iterable is None or isinstance(iterable, Undefined):
        return iterable

    # Do custom sorting of iterable here

    return iterable

# ...

env = Environment()
env.filters['customsort'] = custom_sort

問題が発生するまで、効率について心配する必要はありません。いずれにしても、テンプレート エンジンがボトルネックになることはほとんどありません。

于 2011-03-30T02:37:03.193 に答える