回答
我不确定在Mako内部是否有办法做到这一点,但在服务页面之前,您总是可以做一些后期渲染处理。例如,假设你有下面的代码生成您的可怕的空白:
from mako import TemplateLookup
template_lookup = TemplateLookup(directories=['.'])
template = template_lookup.get_template("index.mako")
whitespace_mess = template.render(somevar="no whitespace here")
return whitespace_mess # Why stop here?
你可以在一个额外的步骤,像这样加:
from mako import TemplateLookup
template_lookup = TemplateLookup(directories=['.'])
template = template_lookup.get_template("index.mako")
whitespace_mess = template.render(somevar="no whitespace here")
cleaned_up_output = cleanup_whitespace(whitespace_mess)
return cleaned_up_output
...其中cleanup_whitespace()是一些功能做你想要的(它可以通过HTML Tidy或slimmer或其他)。这不是最有效的方法,但它使得一个快速的例子:)
如果您的数据不是太动态,您可以存储模板输出的优化缓存并将其提供给Web客户端。
有反斜杠的东西。
查看mako http://makotemplates.org的首页。
<%def name="makerow(row)">
<tr>
% for name in row:
<td>${name}</td>\
% endfor
</tr>
</%def>
但严重的是,我不会花太多时间试图正确格式化输出。重要的是要有可读的模板代码。我使用Webkit(或FireBug,如果您愿意)的Web检查员比“查看源代码”更频繁。
如果你真的想要好的格式化html输出,你总是可以写一个中间件来做到这一点。
http://docs.makotemplates.org/en/latest/syntax.html?highlight=empty#newline-filters – 2015-04-24 13:16:05
没有后处理的唯一方法就是避免模板中出现空白。但是,作为开发人员,这会让你感到非常困难。
您需要决定是否在模板渲染完成后清理HTML字符串的时间将节省足够的带宽以抵消此成本。我建议使用优化的C代码库来为你做这个,比如lxml.html
。
>>> from lxml import html
>>> page = html.fromstring("""<html>
...
... <body>yuck, a newline! bandwidth wasted!</body>
... </html>""")
>>> html.tostring(page)
'<html><body>yuck, a newline! bandwidth wasted!</body></html>'
类似于丹的回答,我通过这个函数传递了渲染输出,它只保留了“故意”的空白。我把这个定义为连续两次回报(即i。为E的空行)
所以
Hello
There
变为
Hello There
但
Hello
There
变为
Hello
There
下面的代码
def filter_newline(input):
rendered_output = []
for line in input.split("\n"):
if line:
# Single new-lines are removed
rendered_output.append(line)
else:
# Subsequent newlines (so no body to the interveaning line) are retained
rendered_output.append("\n")
return "".join(rendered_output)
执行像这样(我偷丹的例子的一部分)
whitespace_mess = template.render(somevar="Hello \nThere")
cleaned_up_output = filter_newline(whitespace_mess)
- 1. 从ExpressionEngine模板中删除空白
- 2. 如何去除ERB模板中的HTML空白字符?
- 3. 如何去除Wintersmith预览输出中的空白
- 4. 如何使用Mako模板去除空白和换行符?我的12362行HTML文件正在查杀IE
- 5. FormEncode,pylons和mako示例
- 6. Mako模板
- 7. 从reportviewer控件中删除输出为pdf的空白空间?
- 8. Python:从文件输出中删除空格(剥离空白)
- 9. 去除XML标签空白
- 10. 通过在python/cherrypy中渲染的Mako模板的空白页面
- 11. Django模板空白
- 12. 修剪Mako输出
- 13. 从输出中剥离空白行
- 14. 从文件加载mako模板
- 15. 带胡子模板的空白输出,连接&node.js
- 16. 如何从SQLCMD输出中删除空白
- 17. 如何去除模板类输出过载的错误
- 18. Python输出空白
- 19. UNDEFINED mako模板错误
- 20. 去除XSL输出
- 21. JsonArrayBuilder给出空白输出
- 22. 空白的Asp.net MVC模板
- 23. PowerBI空白数据模板
- 24. T4模板空白控件
- 25. 使用TRIM去除尾随空白()
- 26. 红宝石1.9带不去除空白
- 27. 如何使用Pylons/Mako模板从独立的python脚本制作HTML电子邮件?
- 28. 删除org.apache.commons.lang模板中的$ {var}以获得空白值
- 29. 去编组返回一个空白输出
- 30. 格式表输出空白?
我不知道如何,涉及到我的空白问题。你能详细说明一下吗? – 2010-10-06 00:34:02
好吧,让Mako像现在一样生成模板。而且,并不是增加后处理每个请求的复杂性(很可能是通过正则表达式),而是在页面处理完毕后提供缓存版本的页面。 – 2010-10-06 00:56:31