看看 Rythm 模板引擎:http ://rythmengine.com
jinja 中的“block”功能在 Rythm 中称为“section”。因此,假设您的布局模板(父模板)称为main.html
:
<h1>@get("title", "default main page")</h1>
<div id="left-panel">@render("leftPanel")<div>
<div id="right-panel">@render("rightPanel")</div>
<div id="main-content">@render()</div>
<div id="footer">
@render("footer"){
@**
* the content here is supplied if the child template failed
* to provide it's own footer implementation
*@
<div class="footer">copyright 2012 ...</div>
}
</div>
这是您的目标模板:
@extends(main)
@set(title: "My Cool Page")
@section("leftPanel") {
<ul class="menu">
...
</ul>
}
@section("rightPanel") {
<div class="news">
...
</div>
}
@*** note no "footer" section supplied so the default content will be used **@
@*** the rest is for the main content **@
...
此功能的真实演示可以在http://rythmengine.com/demo/testdefaultlayoutcontent找到
可以在http://www.playframework.org/modules/rythm找到一个全面的文档。虽然它是针对 Play!Framework 的,但大部分内容也适用于没有 Play!Framework 的纯节奏引擎。
您无需担心 GAE,因为演示本身正在 GAE 上运行。