テンプレートの for ループで使用するために、組み込みの「並べ替え」フィルターのようなイテラブルに適用される Jinja2 のカスタム フィルターを最も効率的に作成するにはどうすればよいですか?
例えば:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
一般的なドキュメントについては、 http://jinja.pocoo.org/docs/api/#writing-filtersを参照してください。
テンプレートの for ループで使用するために、組み込みの「並べ替え」フィルターのようなイテラブルに適用される Jinja2 のカスタム フィルターを最も効率的に作成するにはどうすればよいですか?
例えば:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
一般的なドキュメントについては、 http://jinja.pocoo.org/docs/api/#writing-filtersを参照してください。
他のフィルターを作成するのと同じ方法です。開始するための例を次に示します。
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
問題が発生するまで、効率について心配する必要はありません。いずれにしても、テンプレート エンジンがボトルネックになることはほとんどありません。