百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 网站模板(百分百源码网)>电脑软件>服务器> Tornado Web服务器中处置空白字符的解决方案
分享本文到:

Tornado Web服务器中处置空白字符的解决方案

发布时间:05/16 来源:未知 浏览: 关键词:

Tornado模板引擎不断有一个坑,有时候你可能觉得并不影响正常运用,但强制症就是挨不了:模板会去除每行先后的空格。

最后出来的页面就是这样:

不缩进真的很影响心境的好吧,特殊是对一个python开发者。

国外一些Q&A对这个状况也有一些计议,其中提到比较多的就是compress_whitespace。在github找到一个issue:https://github.com/tornadoweb/tornado/issues/178,就是在埋怨空白字符的题目。空白字符在<pre>中被去掉,导致代码标签“<pre>”这块出题目。

我们看看tornado代码吧,这是Template类的结构函数:

复制代码 代码如下:

def __init__(self, template_string, name="<string>", loader=None,
             compress_whitespace=None, autoescape=_UNSET):
    self.name = name
    if compress_whitespace is None:
        compress_whitespace = name.endswith(".html") or \
            name.endswith(".js")

其中有个compress_whitespace参数,当name(模板地址)是以.html或.js结尾的时候,将compress_whitespace为真。

现实上最后在generate函数里,处置空格的代码:

复制代码 代码如下:

if writer.compress_whitespace and "<pre>" not in value:
    value = re.sub(r"([\t ]+)", " ", value)
    value = re.sub(r"(\s*\n\s*)", "\n", value)

当compress_whitespace为真,且html里没有"<pre>"的时候进入这个if语句。"<pre>"这个我预计就是解决上面那个issue用的,但显明是一个非常不pythonic的方式。

经过一番剖析,可以发明,有这样一些要领可以以免“缩进”被去掉:

1.Template的结构函数中,传入compress_whitespace=False。
2.在模板中参加"<pre>"。
3.模板文件不为.html或.js后缀,可认为.htm或.tpl等。
4.修改中心库代码。

第2种要领确定是最烂的,不可能为了缩进题目去改模板。第3种要领只能算一个权衡之计,去以免费事而不是解决费事,不是我的格调,而且后缀改了往往影响编辑器里的代码高亮和代码补全。第1种要领应当是最佳的,但现实上,我们在controller里调用模板是运用render()或render_string()来做的,而这两个函数是封装了Template对象的新建历程,我们基本接触不到Template的结构函数,所以也无法控制compress_whitespace的值。

所以但愿官方能进行修改,让代码能pythonic。

我这里用第4种要领,直接去修改Tornado中心代码,将这几句注释掉:

热门标签:dede模板 / destoon模板 / dedecms模版 / 织梦模板
责任编辑:5DiFq
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助



订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板