我正在尝试将一些旧的Smarty模板转换为Jinja2。
Smarty在模板中使用eval
语句从当前上下文中呈现模板化字符串。
Jinja2中是否有eval
个等价物?或者这个案例有什么好的解决方法?
答案 0 :(得分:1)
使用@jinja2.contextfilter装饰器为渲染变量制作Custom Filter:
from jinja2 import contextfilter, Template
from markupsafe import Markup
@contextfilter
def dangerous_render(context, value):
return Markup(Template(value).render(context)).render()
然后在你的template.html文件中:
{{ myvar|dangerous_render }}
答案 1 :(得分:1)
我正在寻找一个类似的eval用例并碰到一个不同的堆栈溢出帖子。
这对我有用
<强> routes.py 强>
def index():
html = "<b>actual eval string</b>"
return render_template('index.html', html_str = html)
<强>的index.html 强>
<html>
<head>
<title>eval jinja</title>
</head>
<body>
{{ html_str | safe }}
</body>
</html>