从Jinja2中的超级块访问变量

2024-09-25 04:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试设计一个包含多个部分的报告文档,其中包含一个主要模板:

<html>
  <body>
    {% include "SectionA.html" %}
    {% include "SectionB.html" %}
    ...
  </body>
</html>

其中包含的每个SectionX.html文件扩展了一个base.html文件

我想让base.html设置一系列变量(用于控制流),这些变量可以在SectionX.html文件中重写。我试图用一个setVariables块来实现这一点,但这不起作用

我的base.html文件看起来像:

{% block setVariables %}
{% set doFoo = False %}
{% set doBar = False %}
{% set bazValues = [] %}
{% endblock setVariables %}

{% if doFoo %}
...

然后在每个扩展名文件中覆盖该节:

{% block setVariables %}
{% set doFoo = sectionFoo %}
{% set doBar = sectionBar %}
{% set bazValues = sectionBaz %}
{% endblock setVariables %}

问题是,doFoo被设置在两个完全不同的作用域中,我还没有找到一种从另一个作用域访问其中一个的方法。我不确定使用我目前的策略是否有解决办法,但我非常感谢任何可能有助于创建此模块化、多节报告的方法


Tags: 文件falsebaseincludehtml报告bodyblock