Пользовательский фильтр jinja2 для итератора - PullRequest
7 голосов
/ 30 марта 2011

Как мне наиболее эффективно написать собственный фильтр для Jinja2, который применяется к итерируемому, подобному встроенному фильтру 'sort', для использования в цикле for в шаблоне?

Например:

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

См. http://jinja.pocoo.org/docs/api/#writing-filters для общей документации

1 Ответ

14 голосов
/ 30 марта 2011

Точно так же, как вы пишете любой другой фильтр.Вот пример, с которого следует начать:

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

Не беспокойтесь об эффективности, пока она не станет проблемой.Шаблонный движок в любом случае вряд ли станет узким местом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...