tornado的模板默认时候过滤掉空白的,仅在模板中存在<pre>字符串的时候不过滤,但是如果你的pre标签带有样式或者其他属性了,抱歉了,一样会过滤,有个简单的方法就是重写一下模板引擎中的过滤条件,可以使用下面的代码覆盖掉默认的模板引擎的判断:
import tornado.template
from tornado import escape
# 禁止模板过滤空白
class _Text(tornado.template._Text):
def generate(self, writer):
value = self.value
# Compress whitespace if requested, with a crude heuristic to avoid
# altering preformatted whitespace.
# 禁止过滤空白
# if "<pre>" not in value:
# value = filter_whitespace(self.whitespace, value)
if value:
writer.write_line('_tt_append(%r)' % escape.utf8(value), self.line)
tornado.template._Text = _Text
只需要把代码中注释的下面两行的判断去掉,就可以让模板按原样输出了.
由于tornado的模板引擎没有提供相关的参数控制,这个方法是最pythonic的了