最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tornado Web服務(wù)器中處理空白字符的解決方案

 更新時間:2015年01月21日 09:05:01   投稿:junjie  
這篇文章主要介紹了Tornado Web服務(wù)器中處理空白字符的解決方案,本文通過修改Tornado源碼解決這個問題,需要的朋友可以參考下

Tornado模板引擎一直有一個坑,有時候你可能覺得并不影響正常使用,但強迫癥就是受不了:模板會去掉每行前后的空格。

最后出來的頁面就是這樣:

不縮進真的很影響心情的好吧,特別是對一個python開發(fā)者。

國外一些Q&A對這個情況也有一些討論,其中提到比較多的就是compress_whitespace。在github找到一個issue:https://github.com/tornadoweb/tornado/issues/178,就是在抱怨空白字符的問題??瞻鬃址?lt;pre>中被去除,導致代碼標簽“<pre>”這塊出問題。

我們看看tornado代碼吧,這是Template類的構(gòu)造函數(shù):

復制代碼 代碼如下:

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參數(shù),當name(模板地址)是以.html或.js結(jié)尾的時候,將compress_whitespace為真。

實際上最后在generate函數(shù)里,處理空格的代碼:

復制代碼 代碼如下:

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的方式。

經(jīng)過一番分析,可以發(fā)現(xiàn),有這樣一些方法可以避免“縮進”被去除:

1.Template的構(gòu)造函數(shù)中,傳入compress_whitespace=False。
2.在模板中加入"<pre>"。
3.模板文件不為.html或.js后綴,可以為.htm或.tpl等。
4.修改核心庫代碼。

第2種方法肯定是最爛的,不可能為了縮進問題去改模板。第3種方法只能算一個權(quán)衡之計,去避免麻煩而不是解決麻煩,不是我的風格,而且后綴改了往往影響編輯器里的代碼高亮和代碼補全。第1種方法應(yīng)該是最好的,但實際上,我們在controller里調(diào)用模板是使用render()或render_string()來做的,而這兩個函數(shù)是封裝了Template對象的創(chuàng)建過程,我們根本接觸不到Template的構(gòu)造函數(shù),所以也沒法控制compress_whitespace的值。

所以希望官方能進行修改,讓代碼能pythonic。

我這里用第4種方法,直接去修改Tornado核心代碼,將這幾句注釋掉:

相關(guān)文章

  • Apache?Hudi的多版本清理服務(wù)徹底講解

    Apache?Hudi的多版本清理服務(wù)徹底講解

    這篇文章主要為大家詳細徹底的介紹了Apache?Hudi的多版本清理服務(wù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • 云服務(wù)器Centos中安裝Docker的方法小結(jié)

    云服務(wù)器Centos中安裝Docker的方法小結(jié)

    Docker是一個開源的應(yīng)用容器引擎,利用操作系統(tǒng)本身已有的機制和特性,可以實現(xiàn)遠超傳統(tǒng)虛擬機的輕量級虛擬化,CentOS是Linux發(fā)行版之一,本文給大家介紹云服務(wù)器Centos中安裝Docker的方法,感興趣的朋友一起看看吧
    2023-12-12
  • centos服務(wù)器常用清理腳本分享

    centos服務(wù)器常用清理腳本分享

    做開發(fā)時,經(jīng)常遇到服務(wù)器監(jiān)控報警,日志占據(jù)大量的磁盤空間,需要清理,每次手動清理很麻煩,這里分享一些定時清理的腳本,減輕運維的工作量,這篇文章主要介紹了centos服務(wù)器常用清理腳本分享,需要的朋友可以參考下
    2024-05-05
  • 服務(wù)器安裝conda環(huán)境遇到代理PROXY問題及解決方案

    服務(wù)器安裝conda環(huán)境遇到代理PROXY問題及解決方案

    這篇文章主要為大家介紹了服務(wù)器安裝conda環(huán)境遇到代理PROXY問題及解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 如何從Steam社區(qū)屏蔽分析繞過方法及ASF安全部署

    如何從Steam社區(qū)屏蔽分析繞過方法及ASF安全部署

    這篇文章主要介紹了從Steam社區(qū)屏蔽分析繞過方法及ASF安全部署,本文主要記錄在Ubuntu(Linux)服務(wù)器上的部署教程,但對于沒有用過ASF并不熟悉Nginx的萌新來說,還是建議在Windows上調(diào)試成功后再轉(zhuǎn)到云服務(wù)器上,需要的朋友可以參考下
    2024-05-05
  • 阿里云安全規(guī)則配置詳解

    阿里云安全規(guī)則配置詳解

    這篇文章主要介紹了阿里云安全規(guī)則配置詳解,如果你不將端口設(shè)置安全規(guī)則,瀏覽器是無法訪問到的,那么安全規(guī)則配置到底是怎么配的呢?詳見如下
    2019-12-12
  • Centos7使用docker搭建gitlab服務(wù)器

    Centos7使用docker搭建gitlab服務(wù)器

    這篇文章主要為大家詳細介紹了Centos7使用docker搭建gitlab服務(wù)器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • IBM服務(wù)器診斷面板使用方法

    IBM服務(wù)器診斷面板使用方法

    IBM服務(wù)器一般會有一個服務(wù)器操作員信息面板(診斷面板),服務(wù)器一般的硬件故障都會在診斷面板上提示,但這些提示可能只是一個大概的診斷故障,有助于系統(tǒng)管理員更好的維護
    2018-05-05
  • 簡單粗暴的Caddy Server 使用介紹

    簡單粗暴的Caddy Server 使用介紹

    Caddy是一個Go寫的服務(wù)器軟件,官方的宣傳語The HTTP/2 web server with automatic HTTPS以及Serve The Web Like It is 2016簡明表達了這個軟件的優(yōu)點和趨勢,它擁有基本的apache或者nginx有的web server模塊,同時還有一些很有特色的功能
    2016-11-11
  • 華為RAID 1陣列卡設(shè)置教程圖文詳解

    華為RAID 1陣列卡設(shè)置教程圖文詳解

    這篇文章主要介紹了華為RAID 1陣列卡設(shè)置教程圖文詳解,需要的朋友可以參考下
    2016-04-04

最新評論

长沙县| 哈密市| 如皋市| 牡丹江市| 融水| 辽宁省| 霞浦县| 江阴市| 健康| 黄龙县| 德钦县| 夹江县| 山丹县| 定西市| 五河县| 襄汾县| 自治县| 余姚市| 新乡县| 海晏县| 郯城县| 高要市| 河曲县| 福建省| 武功县| 沛县| 繁昌县| 沙洋县| 平昌县| 大名县| 霸州市| 大同县| 瑞昌市| 桃源县| 休宁县| 桐乡市| 肃南| 体育| 富民县| 即墨市| 祁门县|