"eval" Jinja2 模板中的语句
"eval" statement in Jinja2 template
我正在尝试将一些旧的 Smarty 模板转换为 Jinja2。
Smarty 在模板中使用 eval
语句从当前上下文呈现模板化字符串。
Jinja2 中有 eval
等价物吗?或者对于这种情况有什么好的解决方法?
使用 @jinja2.contextfilter decorator to make a 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 }}
我正在寻找类似的 eval 用例,但遇到了不同的堆栈溢出 post。
这对我有用
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>
参考 : Passing HTML to template using Flask/Jinja2
我正在尝试将一些旧的 Smarty 模板转换为 Jinja2。
Smarty 在模板中使用 eval
语句从当前上下文呈现模板化字符串。
Jinja2 中有 eval
等价物吗?或者对于这种情况有什么好的解决方法?
使用 @jinja2.contextfilter decorator to make a 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 }}
我正在寻找类似的 eval 用例,但遇到了不同的堆栈溢出 post。
这对我有用
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>
参考 : Passing HTML to template using Flask/Jinja2