我正在编写一个程序,该程序应在通过 jinja2 生成的 html 文件中包含相当长的文本 block 。由于宏结构复杂,我想将这些文本构造为 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 ... import 测试第二个选项时犯了非常愚蠢的错误。有一个不匹配的单引号,修复后,它就可以工作了。更正后,文档如下所示:
<!DOCTYPE HTML>
{% from 'templates/standard_texts/text.html' import standard_text %}
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
{{standard_text}}
</body>
</html>
关于jinja2 - 如何从包含的文件中获取 jinja2 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52342985/