Обрезка выхода Мако

Мне очень нравится система шаблонов Mako, которая используется в Pylons и паре других фреймворков Python, и моя единственная жалоба заключается в том, сколько WS утекает даже через простую схему наследования.

Есть ли что-то, что можно сделать ниже, не создавая таких огромных пробелов в WS... или упаковывая мой код, как я начал делать с base.mako?

В противном случае, чтобы понять, чего я пытаюсь добиться ниже.

Base — это что-то вроде класса интерфейса для всех представлений всего приложения, макет — это всего лишь идея прототипа для 3-4 разных файлов макета (таблицы, чистый CSS и т. д.), а контроллер/действие — это тест, чтобы убедиться, что моя идея соответствует действительности. здравомыслящий.

Краткое содержание вопроса: Как вырезать 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>

person David    schedule 24.01.2009    source источник
comment
вау, только что понял, насколько стар этот вопрос, должно быть, это был один из моих последних проектов, в которых использовался прототип.js   -  person David    schedule 09.04.2013


Ответы (1)


Нашел свой собственный ответ http://docs.makotemplates.org/en/latest/filtering.html

Это по-прежнему требовало проб и ошибок, но использование

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

резко сократить количество пробелов. Дополнительную экономию можно найти, проверив скомпилированный шаблон и найдя любые записи, которые просто нажимают ' ' или что-то подобное.

person David    schedule 24.01.2009
comment
К сожалению, это не исправляет def звонки - person Jasper van den Bosch; 10.04.2013