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

标签 jinja2

我正在编写一个程序,该程序应在通过 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/

相关文章:

html - 在神社上保留\n

javascript - 单击警报框中的 'ok' 后,它应该保留在同一页面中

flask - 在jinja2的几个地方重用一段代码

substring - Jinja2模板中的条件子字符串

python - 在 GAE 1.6.0 中添加自定义 Jinja2 过滤器

jinja2 - 如何在 argo 工作流程中转义 "{{"和 "}}"

ansible - 如何使用带有序列和列表的嵌套循环以及如何在 Ansible 中绕过花括号

jinja2 - 我如何将列表映射到字典,其中计算值由ansible中的列表项键入?

list - 将列表转换为字典 - Ansible YAML

html - Twitter bootstrap 风格继承与 jinja2