【问题标题】:How to get jinja2 variables from included files如何从包含的文件中获取 jinja2 变量
【发布时间】:2018-09-15 08:21:42
【问题描述】:

我正在编写一个程序,该程序应在通过 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/#),但我也找不到任何东西。

这是怎么做到的?

【问题讨论】:

    标签: jinja2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-02-22
      • 2014-08-01
      • 2016-08-06
      • 1970-01-01
      • 2014-01-20
      • 2013-01-22
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多