Форум сайта python.su
Привет! вроде облазил весь гугл, есть информация о том, как создать свой кастомный фильтр в jinja2, но не могу понять, как его подключить?
нашел что-то подобное:
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
Офлайн
568
У вас должна где-то в проекте быть функция возвращающая экземпляр environment
https://docs.djangoproject.com/en/1.10/topics/templates/#django.template.backends.jinja2.Jinja2
вот в этом экземпляре все настройки и надстройки jinja, смотрите сюда
http://jinja.pocoo.org/docs/dev/api/#writing-filters
вы пишите функцию фильтра и подключаете её к environment как элемент словаря environment.filters
Офлайн
да, при подключении jinja я создавал файл jinja2.py в директории на одном уровне с settings.py
там прописываю
from django.contrib.staticfiles.storage import staticfiles_storage from django.core.urlresolvers import reverse from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env def do_abovezero(value): return 0 env = Environment(); env.filters['abovezero'] = do_abovezero print(env.filters)
Офлайн
568
Блин, а с какого суахили оно там появится то? Вот так сделай
def do_abovezero(value): return 0 def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) env.filters['abovezero'] = do_abovezero return env
Офлайн
Странно, я думал, что
def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
env = Environment(); env.filters['abovezero'] = do_abovezero
Офлайн