하나의 mako 템플릿에 따라 여러 뷰가있는 피라미드 애플리케이션이 있습니다. 뷰는 매우 복잡하고 버그가 없으므로 뷰를 확장하거나 병합하지 않고 해당 템플릿을 병합하거나 병합하고 싶지 않습니다.여러 파일에서 들어오는 마코
그러나 한 가지보기로 다른 모든 것을 표현하고 싶습니다. 모든 피라미드 뷰와 템플릿을 병합하는 것은 사실상 옵션이 아닙니다.
예를 들어, 로그인보기 & 템플릿과 가입보기 & 템플릿이 있습니다. 이제는 루트 페이지에 둘 다 포함시키고 싶습니다. 로그인과 가입은 공통 스크립트와 스타일 시트 가져 오기가 포함 된 base.mak에서 상속합니다. 다음은 내가 원하는 마코 수입 구조를 그림으로 표현한 것입니다.
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>
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를 추가하여 가입에서 상속하는 것이 중요합니다.
나는이 간단한 수정이 있다고 가정하지만 필자는 피라미드에서 템플릿을 실제로 수행하는 방법에 대한 예제/설명을 찾을 수 없습니다.
또는 여러 개의 피라미드보기 및 템플릿을 단일보기로 결합하는 다른 방법이 있습니까?