基本上,我想创建编辑器,您可以在其中使用jinja2语法编辑页面的一部分。在编辑器中,如果按 Preview ,我希望能够看到页面中包含的渲染模板,但是页面本身具有所有变量和自定义过滤器。我当前的代码是:
Python
from flask import render_template
from jinja2 import Template
# (... route logic here ...)
return render_template('preview.html',
title='Some title',
preview=Template("This is {{ title }}.")
Jinja2
{{ title }}
{{ preview.render() }}
但是输出是:
Some title
This is .
是否可以从具有页面上下文的字符串中渲染我的模板,使输出像这样?
Some title
This is Some title.
答案 0 :(得分:1)
更新
如果要渲染子模板并从父模板继承上下文,则可以使用include
,通常将其与模板路径一起使用(例如{% include 'template.html' %}
,但也可以与Template
对象:
{{ title }}
{% include preview %}
原始答案
您需要将上下文传递给第一个模板中的preview.render()。试试这个:
{{ title }}
{{ preview.render(title=title) }}