4

私は、Pylons や他のいくつかの Python フレームワークで使用されている Mako テンプレート システムが本当に気に入っています。私の唯一の不満は、単純な継承スキームでさえも WS がどれだけリークするかということです。

そのような巨大な WS ギャップを作成せずに、または base.mako でやり始めたようにコードを詰め込まずに、以下を達成する方法はありますか?

それ以外の場合は、以下で達成しようとしていることを理解するために。

ベースは、アプリケーション全体のすべてのビューのインターフェイス クラスのようなものです。レイアウトは、3 ~ 4 個の異なるレイアウト ファイル (テーブル、純粋な CSS など) の単なるプロトタイプのアイデアです。コントローラー/アクションは、私のアイデアが正気。

質問の簡単な要約: 私の Mako スキームで作成された WS を切り取るには?

更新: すべての mako ファイルに 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}! 

レンダリングされた出力:

<!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>
4

1 に答える 1

2

私自身の答えを見つけました http://docs.makotemplates.org/en/latest/filtering.html

まだ試行錯誤が必要でしたが、

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

空白のにじみを劇的に削減します。コンパイルされたテンプレートをチェックし、' ' などをプッシュするだけの書き込みを探すことで、さらに節約できます。

于 2009-01-24T18:14:20.703 に答える