如何从包含的文件中获取 jinja2 变量



我正在编写一个程序,该程序应该在通过jinja2生成的html文件中包含相当长的文本块。由于宏结构复杂,我想将这些文本构建为 jinja2 变量,如下所示:

<!DOCTYPE HTML>
{% set standard_text = "This is the standard text." %}
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
{{standard_text}}
</body>
</html>

这工作正常,但由于这些文本可能相当长,我想将它们放在单独的文件中。所以我创建了一个名为text.html的文件:

{% set standard_text = "This is the standard text." %}

并将其放入名为 templates/standard_texts 的库中。现在我想将其导入 html 文件,我已经尝试了以下方法:

<!DOCTYPE HTML>
{% include 'templates/standard_texts/text.html' %}
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
{{standard_text}}
</body>
</html>

但是,当我运行这个时,我收到此错误:

jinja2.exceptions.UndefinedError: 'standard_text' is undefined

我也尝试过其他方法,例如

{% from 'templates/standard_texts/text.html import standard_text %}

{% extends'templates/standard_texts/text.html' %}

但这也行不通。我已经通读了Jinja2的"模板设计器文档"(http://jinja.pocoo.org/docs/2.10/templates/#(,但我在那里也找不到任何东西。

这是怎么做到的?

事实证明,我在测试第二个选项时犯了非常愚蠢的错误,使用 from ...进口。有一个不匹配的单引号,固定下来,它就可以工作了。更正后,文档如下所示:

<!DOCTYPE HTML>
{% from 'templates/standard_texts/text.html' import standard_text %}
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
{{standard_text}}
</body>
</html>

最新更新