【发布时间】:2014-12-10 14:23:41
【问题描述】:
我有一个金字塔应用程序,其中有多个视图,每个视图都取决于一个 mako 模板。视图非常复杂且没有错误,因此我不想拆分或合并视图,以及相应的模板。
但是,我想要一个视图来代表所有其他视图。合并所有金字塔视图和模板实际上不是一种选择。
例如,我有一个登录视图和模板以及一个注册视图和模板。现在我希望我的根页面包含它们。登录和注册都继承自 base.mak,其中包含常用脚本和样式表导入。下面是我想要的mako导入结构的图示。
base.mak
/ \
login.mak signup.mak
\ /
root.mak
或者,我尝试将它们链接起来: 基础 -> 登录 -> 注册 -> 根
但是,我认为视图不再与它们各自的模板对话。
当我执行第三条链(login.mak -> 注册)时,我的问题就出现了。我将在下面发布类似和提取代码,因为我的完整代码有点长(如果需要更多代码,请随意喊叫)。
base.mak:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
${next.title()}
</title>
#Imports
${next.head()}
</head>
<body>
<div id = "content">
${next.body()}
</div>
</body>
</html>
login.mak:
<%inherit file="base.mak"/>
<%def name="title()">
${next.title()}
</%def>
<%def name="head()">
${next.head()}
</%def>
<div id="login">
<div id="message">
${sMessage}
</div>
<div id="form">
<form action="${url}" method="post"> <--- url returned in views.py
...
</div>
${next.body()}
signup.mak:
<%inherit file="login.mak"/>
<%def name="title()">
</%def>
<%def name="head()">
</%def>
<div id="box">
...
</div>
现在我的问题是,当我尝试像上面那样继承时,我从视图返回的 url 是未定义的。
当然,如果我得到这个工作,添加 base.mak 以从注册继承应该是微不足道的。
我认为有一个简单的解决方法,但我找不到关于如何在金字塔中执行此操作的示例/说明,模板实际上是在哪里做的。
或者,是否有另一种方法可以将多个金字塔视图和模板组合到一个视图中?
【问题讨论】:
标签: templates inheritance pyramid mako