@jslby

Как написать простое расширение на Jinja2?

Пробую написать простое расширение на уровне перекодирования всего содержимого в base64, но не выходит. Не понимаю где ошибка:
class Base64Extension(Extension):
	tags = {'base64'}

	def __init__(self, environment):
		super(Base64Extension, self).__init__(environment)

	def parse(self, parser):
		lineno = next(parser.stream).lineno
		args = [parser.parse_expression()]
		call = self.call_method('_render', args)
		return nodes.Output([call], lineno=lineno)

	def _render(self, text):
		return base64.b64encode(bytes(text, 'utf-8')).decode('utf-8')

env = Environment(loader=FileSystemLoader('project/test'), extensions=[Base64Extension], trim_blocks=True,block_start_string='[[',block_end_string=']]',variable_start_string='[', variable_end_string=']')


print(env.get_template('data2.txt').render())


Шаблон так же выглядит очень просто:
[base64]
Привет текста.
[endbase64]


На выходе просто текст без тегов. Простых примеров написания своих расширений не нешле, может быть у кого то есть примеры например uppercase или тот же base64?
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы