Обрезка выхода Мако
-
20-08-2019 - |
Вопрос
Мне действительно нравится система шаблонов Mako, которая используется в Pylons и паре других фреймворков Python, и моя единственная жалоба заключается в том, как много утечек WS происходит даже через простую схему наследования.
Есть ли что-нибудь, чего можно достичь ниже, не создавая таких огромных пробелов WS...или упаковываю свой код, как я начал делать с base.mako?
В противном случае, чтобы получить представление о том, чего я пытаюсь достичь с помощью приведенного ниже.
Base - это что-то вроде класса интерфейса для всех представлений всего приложения, layout - это просто идея прототипа для 3-4 разных файлов макета (таблиц, чистого CSS и т.д.), А controller / action - это тест, позволяющий убедиться, что моя идея вменяема.
Краткое изложение вопроса:Как вырезать WS, созданный в моей схеме Mako?
Обновить:Это не решение, потому что оно включает в себя заполнение всех моих файлов mako с помощью http://www.makotemplates.org/docs/syntax.html#syntax_newline
/база.мако
<!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>
/макет.мако
<%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>
/контроллер/действие.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'])
значительно сократите количество пропусков.Дополнительную экономию можно найти, проверив скомпилированный шаблон и отыскав любые записи, которые просто нажимают ' ' или аналогичные.