0

在主要的孩子模板文件中,我希望它只有 div 标签,每个标签只调用渲染的孩子文件并在其中粘贴内容。(如 php 中的“包含”函数)但我不知道该怎么做。有人对此有任何想法吗?

4

2 回答 2

1

如果你换成 genshi 而不是默认的孩子,你可以使用包含标签来做到这一点:

 <xi:include href="menu.html" />

切换到genshi相当容易,我认为这只是一个混乱的问题。模板标签的工作原理相同。不过,您应该将扩展名从 .kid 重命名为 .html。

于 2009-05-17T12:18:20.990 回答
1

你可以先定义一个“base_layout.kid”模板:

<html xmlns:py="http://purl.org/kid/ns#">
    <head>
        <title>App Name - ${page_title}</title>
        <link href="layout.css" type="text/css" rel="stylesheet" />
        ${page_specific_css()}
    </head>

    <body>
        <h1>Now viewing: ${page_title} of App Name</h1>

        <content>Default content</content>

        <div class="footer">Page Footer Text</div>
    </body>

</html>

然后用你想要的任何数据替换“page.kid”中的“content”标签:

<html py:layout="'base_layout.kid'"
  xmlns:py="http://purl.org/kid/ns#">

    <link py:def="page_specific_css()"
    href="layout.css" type="text/css" rel="stylesheet" />

    <div py:match="item.tag == 'content'">
        <ul>
             <li>Content Item 1</li>
             <li>Content Item 2</li>
             <li>Content Item 3</li>
        </ul>
    </div>

</html>

您可以检查是否在 python shell 中获得了正确的 html(在删除所有使用的标识符之后):

>>> import kid
>>> t = kid.Template("page.kid")
>>> print t.serialize()
于 2009-07-17T06:08:00.110 回答