Mako出力のトリミング
-
20-08-2019 - |
質問
Pylonsや他の2、3の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>
解決
自分の答えを見つけた http://docs.makotemplates.org/en/latest/filtering.html
まだ試行錯誤が必要でしたが、使用
t = TemplateLookup(directories=['/tmp'], default_filters=['trim'])
ホワイトスペースの出血を劇的に減らします。追加の節約は、コンパイルされたテンプレートをチェックし、「」または同様のものをプッシュしている書き込みを探すことで見つけることができます。
所属していません StackOverflow