如何在不使用 Jinja 中的上下文变量渲染的情况下获取模板纯文本 html?
How to get template plain html without rendering with context vars in Jinja?
我有一组模板,可以导入和扩展父模板,我想要使用这些导入和扩展渲染模板,但不渲染 jinja 的上下文变量。
Jinja 是否支持使用排除或导入块进行部分渲染?
是否可以不渲染上下文变量并获取模板?
使用 Tornado,您只需读取模板并将它们写入响应即可。如果您不想渲染它们,请不要使用 render
函数。
示例:
class MyHandler(web.RequestHandler):
def get(self):
with open('/path/to/template.html') as f:
self.write(f.read())
另一种解法:
Jinja2 Environment
class 允许您自定义用于上下文变量的括号。这意味着,您可以将这些括号 - {{ ... }}
设置为其他一些字符,如 - [[ ... ]]
,Jinja2 将不会渲染旧括号。因此,Jinja 不会将这些 {{ }}
视为特殊字符,并且会像任何其他字符一样输出它们。
这是一个简单的例子:
from jinja2 import Environment
env = Environment(
... other usual options ...
variable_start_string='[[',
variable_end_string=']]'
)
然后使用此 env
呈现您的模板。所有带大括号的变量 - {{ ... }}
都不会被渲染,但其他扩展模板也将被包含。
我有一组模板,可以导入和扩展父模板,我想要使用这些导入和扩展渲染模板,但不渲染 jinja 的上下文变量。 Jinja 是否支持使用排除或导入块进行部分渲染? 是否可以不渲染上下文变量并获取模板?
使用 Tornado,您只需读取模板并将它们写入响应即可。如果您不想渲染它们,请不要使用 render
函数。
示例:
class MyHandler(web.RequestHandler):
def get(self):
with open('/path/to/template.html') as f:
self.write(f.read())
另一种解法:
Jinja2 Environment
class 允许您自定义用于上下文变量的括号。这意味着,您可以将这些括号 - {{ ... }}
设置为其他一些字符,如 - [[ ... ]]
,Jinja2 将不会渲染旧括号。因此,Jinja 不会将这些 {{ }}
视为特殊字符,并且会像任何其他字符一样输出它们。
这是一个简单的例子:
from jinja2 import Environment
env = Environment(
... other usual options ...
variable_start_string='[[',
variable_end_string=']]'
)
然后使用此 env
呈现您的模板。所有带大括号的变量 - {{ ... }}
都不会被渲染,但其他扩展模板也将被包含。