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

时间:2018-09-15 08:21:42

标签: 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." %}

并将其放入名为template / 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/#),但也找不到任何东西。

这是怎么做的?

1 个答案:

答案 0 :(得分:0)

事实证明,使用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>