Python 从Jinja2中的超级块访问变量
我一直在尝试设计一个包含多个部分的报告文档,其中包含一个主要模板:Python 从Jinja2中的超级块访问变量,python,html,inheritance,scope,jinja2,Python,Html,Inheritance,Scope,Jinja2,我一直在尝试设计一个包含多个部分的报告文档,其中包含一个主要模板: <html> <body> {% include "SectionA.html" %} {% include "SectionB.html" %} ... </body> </html> 然后在每个扩展名文件中覆盖该节: {% block setVariables %} {% set doFoo = sectionFoo %} {% set doB
<html>
<body>
{% include "SectionA.html" %}
{% include "SectionB.html" %}
...
</body>
</html>
然后在每个扩展名文件中覆盖该节:
{% block setVariables %}
{% set doFoo = sectionFoo %}
{% set doBar = sectionBar %}
{% set bazValues = sectionBaz %}
{% endblock setVariables %}
问题是,doFoo
被设置在两个完全不同的作用域中,我还没有找到一种方法来访问其中一个。我不确定使用我当前的策略是否有解决方法,但我希望能够帮助创建此模块化、多节报告。您可以使用标记在当前名称空间中呈现base.html
的内容
因此base.html
应该只为公共变量设置默认值:
{% set doFoo = False %}
{% set doBar = False %}
{% set bazValues = [] %}
然后在每个单独的HTML文件中:
{% include 'base.html' %}
这是一个相当不错的解决方案,不过如果能够用
extend
覆盖块就好了。有什么想法吗?或者我在基本文件中创建了一些复杂的控制流?您可以将变量存储在单独的模板文件中,例如变量。jinja2
,专门用于设置变量以与include
标记一起使用,离开base.html
时,重点是用block
标记定义基本html模板。然后,每个单独的HTML文件将包含变量.jinja2
和扩展base.HTML
。
{% include 'base.html' %}