使用页面上下文从字符串渲染jinja2模板

时间:2020-05-20 02:35:17

标签: python flask jinja2

基本上,我想创建编辑器,您可以在其中使用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.

1 个答案:

答案 0 :(得分:1)

更新

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

{{ title }}
{% include preview %}

原始答案

您需要将上下文传递给第一个模板中的preview.render()。试试这个:

{{ title }}
{{ preview.render(title=title) }}
相关问题