在 jinja2 中使用包含文件中的块作为父级

2023-11-21

我不确定我想做的事情是否可行:我试图在父模板中获取一个块,以由父模板的子模板中包含的文件填写。

解释这一点的最好方法是一个测试用例:

File t1.djhtml:

<root>
    <block t3_container>
        {% block t3 %}This should be 'CONTENT'{% endblock %}
    </block t3_container>

    <block t2_container>
    {% block t2 %}{% endblock %}
    </block t2_container>
</root>

File t2.djhtml:

{% extends 't1.djhtml' %}

{% block t2 %}
        <block t2>
            {%- include 't3.djhtml' with context %}
        </block t2>
{% endblock %}

File t3.djhtml:

{% block t3 %}
        <block t3>
            CONTENT
        </block t3>
{% endblock %}

File test.py:

from jinja2 import Environment, FileSystemLoader
env  = Environment(loader=FileSystemLoader(''))
t=env.get_template('t2.djhtml')
print t.render()

输出是:

<root>
    <block t3_container>
        This should be 'CONTENT'
    </block t3_container>

    <block t2_container>

        <block t2>
        <block t3>
            CONTENT
        </block t3>

        </block t2>

    </block t2_container>
</root>

The t2块应该是空的,并且t3_container应该有块t3里面的内容。我该如何实现这个目标?


您可以在包含的文件中使用宏,但不是包含它,而是使用上下文导入宏。


T1.html

<root>
  <block t3_container>
    {% block t3 %}{% endblock %}
  </block t3_container>

  <block t2_container>
  {% block t2 %}{% endblock %}
  </block t2_container>
</root>

T2.html

{% extends 'T1.html' %}
{%- from 'T3.html' import inner, inner2 with context %}

{% block t3 %}
    {{ inner2() }}   
{% endblock %}

{% block t2 %}
    <block t2>
        {{ inner() }}
    </block t2>
{% endblock %}

T3.html

{% macro inner2() %}
    <block t3>
        CONTENT '{{ foo+1 }}'
    </block t3>
{% endmacro %}

{% macro inner() %}
  hello
{% endmacro %}

test.py

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader("."))
t = env.get_template("T2.html")

print(t.render({"foo": 122}))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 jinja2 中使用包含文件中的块作为父级 的相关文章

随机推荐

  • 在子字符串匹配(或包含)时加入 PySpark 数据帧

    我想在两个数据帧之间执行左连接 但列不完全相同 第一个数据帧中的连接列相对于第二个数据帧有一个额外的后缀 from pyspark import SparkContext import pyspark sql functions as f
  • 何时使用 GAE 数据存储中的实体组

    跟进我之前关于 GAE 数据存储实体层次结构的问题 我仍然很困惑什么时候使用实体组 举这个简单的例子 Every Company有一个或多个Employee实体 An Employee不能移动到另一个Company 以及处理一个的用户Com
  • Django 使用表达式聚合查询

    我有一个模型 XYZ 我需要获取给定查询集的字段 a b 和表达式 x y 的最大值 它对于田野来说效果很好 就像是 gt gt gt XYZ all aggregate Max a a max 10 但是 我找不到一种方法来实现表达式 尝
  • 使用 ggplot2 为组自定义颜色

    我正在尝试使用下面给出的代码使用 ggplot2 绘制线性判别图 require MASS require ggplot2 data iris my data lt iris model lt lda formula Species dat
  • 如何截断android领域中的所有表

    您好 我尝试在用户注销时截断 Android 中的所有表 我仅使用领域默认路径 realm Realm getInstance getApplicationContext public void clearDB Realm deleteRe
  • Bower(和 npm)版本语法是什么?

    Bower 使我能够使用以下语法指定包的版本要求 dependencies
  • 使用 pyplot 在不等轴上绘制圆

    我想在自动缩放的 pyplot 生成的图形上绘制一个圆圈 当我跑步时 ax get aspect 希望得到一个可以操纵椭圆轴的值 pyplot 返回 auto 这没什么用处 您建议使用什么方法在具有不等轴的 pyplot 图上绘制圆 这个问
  • 如何在 Swift 中重置/重新启动视图控制器?

    我想在我的导航栏上有一个 重置 按钮 并且我希望将其连接到IBAction有点 重新启动 控制器 我有一些来自另一个控制器的转折 它改变了某些方面viewcontroller 有一个collectionview 并且我希望用户能够重新开始
  • 打开/解压 zip 文件时 Cordova 构建 Gradle 错误

    当我运行 cordova build 时 我得到了这个 Running command Users tyrant workspace ideaProject hello platforms android cordova build AND
  • 如 help(foo) 所示,Python 方法签名中的正斜杠“/”的含义是什么? [复制]

    这个问题在这里已经有答案了 在交互返回的签名中help foo a 的含义是什么 In 37 help object eq Help on wrapper descriptor eq self value Return self value
  • Spring/Java中的调度任务

    我正在生成一个线程 它将不断从数据库中提取记录块并将它们放入队列中 该线程将在服务器负载上启动 我希望这个线程始终处于活动状态 如果数据库中没有记录 我希望它等待一段时间后再次检查 我正在考虑使用 Spring 任务调度程序来安排此任务 但
  • 用于创建用户配置文件的 Windows API

    我正在尝试找到用于创建用户配置文件的 Window API 我正在 Windows 中创建本地用户 并且尝试使用 CreateProcessWithLogonW 并设置了 LOGON WITH PROFILE 标志来与该用户运行进程 由于配
  • 您在常见的 Delphi 编程中实现了哪些设计模式? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 您采用什么设计模式常见的Delphi编程 有哪些图案easier适应Delphi编程 每种语言在不同的领域都很优秀 那么使用 Delphi 时哪些模式可能是非常强大的结构 如果您能告诉我一
  • React 路由器或链接未渲染

    我在 redux 应用程序中使用react router dom 这是我在 index js 中的初始设置 ReactDOM render
  • pg_stat_activity 不会在过程或事务中更新

    I query pg stat activity但在我第一次在 plpgsql 函数体内查询它之后 内容似乎保持不变 SERIALIZABLE or REPEATABLE READ交易 为什么pg stat activity不遵守规则REA
  • Java图像转换

    我需要为我的图像创建 3D 深度效果 数字 1 是我所拥有的 数字 2 是我想要转换数字 1 的形状 那么在 Java 标准图形库或其他一些开源库中是否有任何方法可以实现这一点 这不能使用AffineTransform班级 请参阅维基百科关
  • Stream.map/filter 中的 Lambda 未调用

    我试图在 a 中找到单独的重复项和非重复项List通过将它们添加到Set and List使用时Stream filter and Stream map List
  • 在 C 程序中为同一个指针调用两次“free”有什么害处吗?

    如果我有一个 C 程序 例如 SomeTypePtr my type my type malloc sizeof someType do stuff free my type do a bunch of more stuff free my
  • React - 我无法停止表格内标签点击的传播

    在下面的例子中 我有一个简单的 table 里面有一个复选框 我在 td tr 和复选框上有点击事件 我希望能够单击复选框并停止冒泡到 td 和 tr 一个简单的 event stopPropagation 效果很好 问题是如果我想连接一个
  • 在 jinja2 中使用包含文件中的块作为父级

    我不确定我想做的事情是否可行 我试图在父模板中获取一个块 以由父模板的子模板中包含的文件填写 解释这一点的最好方法是一个测试用例 File t1 djhtml