Использование easy-thumbnails (или другой сторонней библиотеки) с jinja2 в Django
Каков процесс использования стороннего фильтра, такого как easy-thumbnails, с Jinja2 в Django? Нужно ли как-то регистрировать фильтры, которые мне нужны? В частности, я хочу использовать thumbnail_url
фильтр, который я использовал, как:
<img src="{{ the_thing.image|thumbnail_url:'homepage_large' }}">
Я попытался преобразовать это в синтаксис Jijnja2 следующим образом:
{{ the_thing.image|thumbnail_url('homepage_large') }}
но получите следующую ошибку:
django.template.base.TemplateSyntaxError: ("no filter named 'thumbnail_url'",)
1 ответ
Вам нужно будет добавить фильтр в вашу среду Jinja2:
def environment(**options):
env = Environment(**options)
env.globals.update(**{
'static': staticfiles_storage.url,
'url': reverse,
})
# add easy-thumbnails function as a Jinja2 filter
from easy_thumbnails.templatetags.thumbnail import thumbnail_url
env.filters.update(**{
'thumbnail_url': thumbnail_url,
})
return env
Вы должны знать, что теги шаблонов в easy-thumbnails созданы для шаблонов Django. Однако в этом очень конкретном случае thumbnail_url
Функция также работает с шаблонами Jinja2.
Лучшей реализацией было бы написать свои собственные функции, чтобы обернуть функциональность, реализованную в easy-thumbnails, и вместо этого использовать эти функции в качестве фильтров Jinja2.