如何最有效地编写一个自定义过滤器,使其适用于类似内置的“sort”过滤器的可迭代对象,在模板中的for循环中使用?
例如:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
看一下 http://jinja.pocoo.org/docs/api/#writing-filters 了解一般文档。
如何最有效地编写一个自定义过滤器,使其适用于类似内置的“sort”过滤器的可迭代对象,在模板中的for循环中使用?
例如:
{% for item in iterable|customsort(somearg) %}
...
{% endfor %}
你可以像编写其他过滤器一样进行编写。这里有一个示例,可以帮助你入门:
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)
。这有帮助吗? - Cameron