编写“代码” Jinja2 中的扩展
我正在尝试为 Jinja2 编写一个扩展,以便我可以在模板中运行任意 python 代码(我有一个沙箱来安全地运行此代码)。我知道我可以使用 Mako 之类的东西,它允许嵌入 python 代码,但我更喜欢使用 Jinja2,因为我喜欢它的一般语法。
我打算在模板中执行的操作的一个示例:
{{ x }}
{% code %}
x = x + 1
{% endcode %}
{{ x }}
如果我使用 x = 1 渲染上面的模板,我希望输出是,
1
2
我根据文档上的示例编写了一个扩展。我可以使用 contextfunction 装饰器访问上下文,但它是不可变的。
在扩展程序的回调中,我想做这样的事情,
exec body in context
一些 Jinja2 大师可以帮助我吗?
I am trying to write an extension for Jinja2 so that I can run arbitrary python code in my templates (I have a sandbox to run this code safely). I know I can use something like Mako which allows embedding python code but I prefer using Jinja2 as I like it's syntax in general.
An example of what I intend to do in the template:
{{ x }}
{% code %}
x = x + 1
{% endcode %}
{{ x }}
If I render above template with x = 1, I expect the output to be,
1
2
I wrote an extension based on the example on the docs. I am able to access the context by using the contextfunction decorator but it is immutable.
Inside my callback in the extension, I would like to do something like this
exec body in context
Can some Jinja2 guru help me out here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论