7

我如何最有效地为 Jinja2 编写一个自定义过滤器,该过滤器适用于像内置“排序”过滤器这样的可迭代对象,用于模板中的 for 循环?

例如:

{% 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 回答