将多个孩子模板文件嵌入到主要模板文件中

时间:2009-05-07 08:11:10

标签: turbogears

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

2 个答案:

答案 0 :(得分:1)

如果你换成genshi而不是默认的孩子,你可以使用include标签:

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

交换到genshi相当容易,我认为这只是一个限制问题。模板标签的工作方式相同。您应该将扩展名从.kid重命名为.html。

答案 1 :(得分: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()