我正在尝试为Jinja2编写扩展,以便我可以在我的模板中运行任意python代码(我有一个沙箱可以安全地运行此代码)。我知道我可以使用类似Mako的东西,它允许嵌入python代码,但我更喜欢使用Jinja2,因为我喜欢它的语法。
我打算在模板中做的一个例子:
{{ x }}
{% code %}
x = x + 1
{% endcode %}
{{ x }}
如果我在x = 1的模板上面渲染,我希望输出为
1
2
我根据文档上的示例编写了一个扩展。我可以使用contextfunction装饰器访问上下文,但它是不可变的。
在扩展程序中的回调中,我想做类似的事情
exec body in context
一些Jinja2大师可以帮助我吗?