【发布时间】:2011-03-30 02:25:39
【问题描述】:
我如何最有效地为 Jinja2 编写一个自定义过滤器,该过滤器适用于诸如内置“排序”过滤器之类的可迭代对象,以便在模板中的 for 循环中使用?
例如:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
【问题讨论】:
标签: python jinja2 customization
我如何最有效地为 Jinja2 编写一个自定义过滤器,该过滤器适用于诸如内置“排序”过滤器之类的可迭代对象,以便在模板中的 for 循环中使用?
例如:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
【问题讨论】:
标签: python jinja2 customization
与您编写任何其他过滤器的方式相同。这是一个可以帮助您入门的示例:
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
在成为问题之前不要担心效率。无论如何,模板引擎都不太可能成为瓶颈。
【讨论】:
foo|ss 应该可以工作,但ss(foo) 不行。这有帮助吗?