Я бы хотел добавить фильтр для форматирования своего времени, и лучшими были бы фильтры типа timesince
django, которые автоматически выводят язык выбранного языка i18n, но сначала для быстрого решения я хотел бы отформатировать мойДата. предлагаемое решение из руководства :
def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
return value.strftime(format)
jinja_environment.filters['datetimeformat'] = datetimeformat
Но добавление этого кода в мой файл не делает фильтр доступным в шаблоне:
{{ ad.modified|datetimeformat }}
TemplateAssertionError: no filter named 'datetimeformat'
Если я добавлю код в библиотеку Jinja2 filters.py
, он будет работать.Но мне не нужно добавлять файлы Jinja2 вручную, это должно сработать, просто добавив Jinja2 в мой app.yaml
и вставив мой фильтр в мой код, а не в код Jinja2.Куда я должен поместить код фильтра?
Спасибо
Обновление
Мой код выглядит следующим образом, и кажется, что фильтр не выбран:
from django.utils import translation
from django.utils.translation import gettext, ngettext, ugettext, ungettext, get_language, activate
from jinja2 import Environment, FileSystemLoader
class DjangoTranslator(object):
def __init__(self):
self.gettext = gettext
self.ngettext = ngettext
self.ugettext = ugettext
self.ungettext = ungettext
class DjangoEnvironment(jinja2.Environment):
def get_translator(self, context):
return DjangoTranslator()
jinja_environment = DjangoEnvironment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=['jinja2.ext.i18n'])
jinja_environment.install_gettext_translations(translation)
def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
return value.strftime(format)
jinja_environment.filters['datetimeformat'] = datetimeformat