gpt4 book ai didi

python - Turbogears/genshi 中的 block 标签(py :match)?

转载 作者:行者123 更新时间:2023-12-01 06:04:40 24 4
gpt4 key购买 nike

好吧,我来自 Django,所以如果我写的内容没有意义,请原谅。我正在尝试使用 genshi “覆盖” Turbogears 中我的主模板的一部分。到目前为止,我只尝试了 py:match 指令,但没有成功:

主模板:

<div id="menu">
<div class="menu-items" py:match="topmenu" py:attrs="select('@*')">
${select('*')}
</div>
</div>

子模板:

<topmenu> <span> HELLO! </span> </topmenu>

这会呈现 <span> HELLO! </span>菜单 div 之外。我做错了什么?

最佳答案

Genshi py:match 有点难以理解。 TurboGears2 文档很好地解释了这个概念:“给定一个 XPath 表达式,它会查找并替换模板中与该表达式匹配的每个元素 - 包含 py:match 的元素的内容。”

这意味着实际上具有 py:match 的元素会替换没有它的元素。因此,如果您想将子模板中的菜单放入主模板中,您应该反转两者:

大师:

<body py:match="body" py:attrs="select('@*')">
<topmenu id="menu-items"></topmenu>
</body>

child :

<body>
<div py:match="topmenu" py:attrs="select('@*')"><span>item1</span></div>
</body>

使用 py:match 通常比您需要的更复杂,我建议您查看快速入门模板中的页眉和页脚实现,它们使用更简单的方法来管理可重用模板部分。

对于菜单的具体情况,您还可以查看 tgext.menu它使得在 Turbogears 应用程序中处理菜单和导航栏变得非常容易。

关于python - Turbogears/genshi 中的 block 标签(py :match)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com