用于迭代器的自定义jinja2过滤器

7 投票
1 回答
8628 浏览
提问于 2025-04-16 14:42

我该如何高效地为Jinja2编写一个自定义过滤器,使其可以像内置的'sort'过滤器一样,应用于可迭代对象,并在模板中的循环中使用呢?

举个例子:

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

有关一般文档,请查看 http://jinja.pocoo.org/docs/api/#writing-filters

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

别担心效率问题,直到它真的成为一个问题。模板引擎一般不会是性能瓶颈。

撰写回答