假设我在变量 X 中有实际的 jinja 模板代码。假设 X 的内容是“{{ some_other_variable }}”。
如何在渲染 X 内容的同时显示 X?
例如,这不起作用:
{{ X }}
因为它只是将其渲染到屏幕“{{ some_other_variable }}”而不是 some_other_variable 的内容。
我这样做的原因是我有一个网站,(受信任的)用户可以在其中创建帖子,这些帖子本身可能包含 jinja 模板代码。视图页面显示这些帖子,但由于上述问题,直接呈现它们,而不是按照我的意愿替换变量。
我知道有点晚了:)但这里有一个不影响模板代码的解决方案:
import jinja2
def recursive_render(tpl, values):
prev = tpl
while True:
curr = jinja2.Template(prev).render(**values)
if curr != prev:
prev = curr
else:
return curr
测试运行:
>>> recursive_render("Hello {{X}}!", dict(X="{{name}}", name="world"))
u'Hello world!'
请注意,这不是很有效,因为每次迭代都必须从头开始重新解析模板。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)