2009-01-24 11 views
4

J'aime vraiment le système de templates Mako utilisé dans Pylons et quelques autres frameworks Python, et mon seul reproche est de savoir à quel point WS traverse même un simple système d'héritage.Rognage Mako sortie

Y at-il de toute façon à accomplir ci-dessous, sans créer de tels écarts WS énormes ... ou emballer mon code comme je l'ai commencé à faire avec base.mako?

Sinon, pour comprendre ce que j'essaie d'accomplir ci-dessous. Base est un peu comme une classe d'interface pour toutes les vues pour l'ensemble de l'application, la mise en page est juste une idée prototype pour 3-4 fichiers de mise en page différents (tableaux, CSS pur, etc), et controller/action est un test à faire Bien sûr, mes idées sont saines.

Résumé de la question: Comment couper le WS créé dans mon système Mako?

Mise à jour: est-ce pas une solution car elle implique l'ensemencement tous mes fichiers avec mako \ 's http://www.makotemplates.org/docs/syntax.html#syntax_newline

/base.mako

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head><%def name="headtags()"></%def>${self.headtags()}</head> 
    <body> 
    <%def name="header()"></%def>${self.header()}${next.body()}<%def name="footer()"></%def>${self.footer()} 
    </body> 
</html> 

/layout.mako

<%inherit file="/base.mako"/> 
<%def name="headtags()"> 
    ${parent.headtags()} 
    <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script> 
</%def> 
<%def name="header()"> 
    <h1>My Blogination</h1> 
</%def> 
<div id="content">${next.body()}</div> 

/controller/action.mako

<%inherit file="/layout.mako" /> 
<%def name="headtags()">  
    <title> Hello world, templating system is 1 percent done</title> 
    ${parent.headtags()} 
</%def> 
Hello ${c.name}! 

sortie rendu:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head>  
    <title> Hello world, templating system is 1 percent done</title> 

    <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script> 


</head> 
    <body> 

    <h1>My Blogination</h1> 


<div id="content"> 

Hello Anonymous! 

</div> 

    </body> 
</html> 
+0

wow, juste réalisé quel âge cette question était, cela doit avoir été l'un de mes derniers projets à utiliser prototype.js – David

Répondre

2

trouvé ma propre réponse http://docs.makotemplates.org/en/latest/filtering.html

Il reste nécessaire quelques essais et erreurs, mais en utilisant

t = TemplateLookup(directories=['/tmp'], default_filters=['trim']) 

considérablement réduire le saignement des espaces blancs. Des économies supplémentaires peuvent être trouvées en vérifiant les modèles compilés et en recherchant les écritures qui ne font que pousser '' ou similaire.

+2

alors quelle technique utilisez-vous pour résoudre ce problème? – cmcginty

+2

Il est regrettable que cela ne corrige pas les appels 'def' –