Templates 来自多个文件的Mako

Templates 来自多个文件的Mako,templates,inheritance,pyramid,mako,Templates,Inheritance,Pyramid,Mako,我有一个金字塔应用程序,有多个视图,每个视图取决于一个mako模板。这些视图非常复杂而且没有bug,所以我不想拆分或合并视图,更不想拆分或合并相应的模板 但是,我希望一个视图代表所有其他视图。合并所有棱锥视图和模板实际上不是一个选项 例如,我有一个登录视图和模板以及一个注册视图和模板。现在我希望我的根页面包含这两个元素。登录和注册都继承自base.mak,它包含常用脚本和样式表导入。以下是我想要的mako进口结构的图示 base.mak / \

我有一个金字塔应用程序,有多个视图,每个视图取决于一个mako模板。这些视图非常复杂而且没有bug,所以我不想拆分或合并视图,更不想拆分或合并相应的模板

但是,我希望一个视图代表所有其他视图。合并所有棱锥视图和模板实际上不是一个选项

例如,我有一个登录视图和模板以及一个注册视图和模板。现在我希望我的根页面包含这两个元素。登录和注册都继承自base.mak,它包含常用脚本和样式表导入。以下是我想要的mako进口结构的图示

        base.mak  
       /         \  
login.mak         signup.mak  
       \         /  
        root.mak  
或者,我尝试将它们链接起来: 基本->登录->注册->根目录

然而,我认为视图不再与各自的模板对话

当我做第三链(login.mak->signup)时,我的问题就出现了。我将在下面发布类似的代码并提取代码,因为我的完整代码有点长(如果需要更多的代码,请随意呼喊)

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>
<%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()}
<%inherit file="login.mak"/>

<%def name="title()">
</%def>

<%def name="head()">
</%def>

<div id="box">
...
</div>
<%inherit file="base.mak"/>
<%def name="title()">
</%def>

<%def name="head()">
    <link rel="stylesheet" type="text/css" href="${request.static_url(...
</%def>

<div id="login">
    <div id=".....
</div>

${next.title()}
#进口
${next.head()}
${next.body()}
登录.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>
<%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()}
<%inherit file="login.mak"/>

<%def name="title()">
</%def>

<%def name="head()">
</%def>

<div id="box">
...
</div>
<%inherit file="base.mak"/>
<%def name="title()">
</%def>

<%def name="head()">
    <link rel="stylesheet" type="text/css" href="${request.static_url(...
</%def>

<div id="login">
    <div id=".....
</div>

${next.title()}
${next.head()}
${sMessage}

好的,我知道了。必须使用mako的
,这样就没有复杂的继承结构。因此,现在我的文件如下所示:

root.mak

<%inherit file="base.mak"/>

<%def name="title()">
    Welcome
</%def>

<%def name="head()">
</%def>


<%include file="login.mak"/>
<%include file="signup.mak"/>