Написание расширения «код» в Jinja2 - PullRequest
3 голосов
/ 24 января 2012

Я пытаюсь написать расширение для Jinja2, чтобы я мог запускать произвольный код Python в своих шаблонах (у меня есть песочница для безопасного выполнения этого кода). Я знаю, что могу использовать что-то вроде Mako, которое позволяет встраивать код на Python, но я предпочитаю использовать Jinja2, так как мне нравится его синтаксис в целом.

Пример того, что я собираюсь сделать в шаблоне:

{{ x }}

{% code %}
x = x + 1
{% endcode %}

{{ x }}

Если я выполню приведенный выше шаблон с x = 1, я ожидаю, что результат будет

1
2

Я написал расширение, основанное на примере из документации. Я могу получить доступ к контексту с помощью декоратора contextfunction, но он неизменен.

Внутри моего обратного вызова в расширении я хотел бы сделать что-то подобное

exec body in context

Может ли какой-нибудь гуру Джинджи2 помочь мне здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...