我有一组模板,用于导入和扩展父模板,我想使用这些导入和扩展来呈现模板,但不为Jinja呈现上下文变量。 Jinja是否支持使用排除或导入的块进行部分渲染? 是否可以不渲染上下文变量并获取模板?
答案 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
呈现您的模板。所有带有大括号的变量-{{ ... }}
将不会呈现,但还将包含其他扩展模板。