Я пытаюсь написать расширение для Jinja2, чтобы я мог запускать произвольный код Python в своих шаблонах (у меня есть песочница для безопасного выполнения этого кода). Я знаю, что могу использовать что-то вроде Mako, которое позволяет встраивать код на Python, но я предпочитаю использовать Jinja2, так как мне нравится его синтаксис в целом.
Пример того, что я собираюсь сделать в шаблоне:
{{ x }}
{% code %}
x = x + 1
{% endcode %}
{{ x }}
Если я выполню приведенный выше шаблон с x = 1, я ожидаю, что результат будет
1
2
Я написал расширение, основанное на примере из документации. Я могу получить доступ к контексту с помощью декоратора contextfunction, но он неизменен.
Внутри моего обратного вызова в расширении я хотел бы сделать что-то подобное
exec body in context
Может ли какой-нибудь гуру Джинджи2 помочь мне здесь?