迭代器的自定义jinja2过滤器
问题内容:
如何最有效地为Jinja2编写一个自定义过滤器,该过滤器适用于像内置“ sort”过滤器这样的可迭代对象,以用于模板的for循环中?
例如:
{% 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
在出现问题之前,不必担心效率。在任何情况下,模板引擎都不太可能成为瓶颈。