Python 从带有页面上下文的字符串呈现jinja2模板

Python 从带有页面上下文的字符串呈现jinja2模板,python,flask,jinja2,Python,Flask,Jinja2,基本上,我想创建一个编辑器,您可以在其中使用jinja2语法编辑页面的一部分。在编辑器中,若你们按下预览键,我希望能够看到呈现的模板包含在页面中,但页面本身有所有变量和自定义过滤器。我目前的代码是: Python from flask import render_template from jinja2 import Template # (... route logic here ...) return render_template('preview.html', title='So

基本上,我想创建一个编辑器,您可以在其中使用jinja2语法编辑页面的一部分。在编辑器中,若你们按下预览键,我希望能够看到呈现的模板包含在页面中,但页面本身有所有变量和自定义过滤器。我目前的代码是:

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.

更新

如果要呈现子模板并从父模板继承上下文,则可以使用
include
,它通常与模板路径一起使用(例如,
{%include'template.html%}
,但也可以与
模板
对象一起使用:

{{ title }}
{% include preview %}
原始答案

您需要在第一个模板中将上下文传递给preview.render()。请尝试以下操作:

{{ title }}
{{ preview.render(title=title) }}

我知道我可以把变量作为参数传递,但是有没有可能不用传递它们就可以传递呢?什么东西可以“粘贴”我的模板来自字符串,并在一次运行中与主模板一起使用上下文处理?啊。在这种情况下,您可以使用
包含
。我已经更新了我的答案。太棒了!非常感谢您,我不知道也可以包含模板对象。