如何在Jinja中使用上下文变量获取模板纯HTML而无需渲染上下文?

时间:2018-09-25 10:46:45

标签: python jinja2 tornado

我有一组模板,用于导入和扩展父模板,我想使用这些导入和扩展来呈现模板,但不为Jinja呈现上下文变量。 Jinja是否支持使用排除或导入的块进行部分渲染? 是否可以不渲染上下文变量并获取模板?

1 个答案:

答案 0 :(得分:1)

使用Tornado,您只需阅读模板并将其写入响应即可。如果您不想渲染它们,请不要使用render函数。

示例:

class MyHandler(web.RequestHandler):
    def get(self):
        with open('/path/to/template.html') as f:
            self.write(f.read())

另一种解决方案:

Jinja2 Environment类允许您自定义用于上下文变量的括号。这意味着,您可以将这些括号-{{ ... }}设置为其他字符,例如-[[ ... ]],而Jinja2将不会呈现旧的括号。因此,Jinja不会将这些{{ }}视为特殊字符,并将像其他任何字符一样输出它们。

这是一个简单的示例:

from jinja2 import Environment

env = Environment(
    ... other usual options ...
    variable_start_string='[[',
    variable_end_string=']]'
)

然后使用此env呈现您的模板。所有带有大括号的变量-{{ ... }}将不会呈现,但还将包含其他扩展模板。