成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于3個(gè)Python模板庫(kù)的比較

開(kāi)發(fā) 后端
Python 模板引擎非常強(qiáng)大。我的簡(jiǎn)化報(bào)告創(chuàng)建的使用案例僅僅觸及了它的皮毛。許多開(kāi)發(fā)人員正在利用這些工具來(lái)構(gòu)建完整的 web 應(yīng)用程序和內(nèi)容管理系統(tǒng)。但是,你并不需要有一個(gè)復(fù)雜的 web 應(yīng)用程序才能使用 Python 模板工具。

[[231720]]

你的下一個(gè) Python 項(xiàng)目需要一個(gè)模板引擎來(lái)自動(dòng)生成 HTML 嗎?這有幾種選擇。

在我的日常工作中,我花費(fèi)大量的時(shí)間將各種來(lái)源的數(shù)據(jù)轉(zhuǎn)化為可讀的信息。雖然很多時(shí)候這只是電子表格或某種類型的圖表或其他數(shù)據(jù)可視化的形式,但也有其他時(shí)候,將數(shù)據(jù)以書(shū)面形式呈現(xiàn)是有意義的。

但我的頭疼地方就是復(fù)制和粘貼。如果你要將數(shù)據(jù)從源頭移動(dòng)到標(biāo)準(zhǔn)化模板,則不應(yīng)該復(fù)制和粘貼。這很容易出錯(cuò),說(shuō)實(shí)話,這會(huì)浪費(fèi)你的時(shí)間。

因此,對(duì)于我定期發(fā)送的任何遵循一個(gè)共同的模式的信息,我傾向于找到某種方法來(lái)自動(dòng)化至少一部分信息。也許這涉及到在電子表格中創(chuàng)建一些公式,一個(gè)快速 shell 腳本或其他解決方案,以便使用從外部源提取的信息自動(dòng)填充模板。

但最近,我一直在探索 Python 模板來(lái)完成從其他數(shù)據(jù)集創(chuàng)建報(bào)告和圖表的大部分工作。

Python 模板引擎非常強(qiáng)大。我的簡(jiǎn)化報(bào)告創(chuàng)建的使用案例僅僅觸及了它的皮毛。許多開(kāi)發(fā)人員正在利用這些工具來(lái)構(gòu)建完整的 web 應(yīng)用程序和內(nèi)容管理系統(tǒng)。但是,你并不需要有一個(gè)復(fù)雜的 web 應(yīng)用程序才能使用 Python 模板工具。 

為什么選擇模板?

每個(gè)模板工具都不甚相同,你應(yīng)該閱讀文檔以了解其確切的用法。但讓我們創(chuàng)建一個(gè)假設(shè)的例子。假設(shè)我想創(chuàng)建一個(gè)簡(jiǎn)短的頁(yè)面,列出我最近編寫(xiě)的所有 Python 主題。就像這樣:

  1. <html>
  2.   <head>
  3.     <title>My Python articles</title>
  4.   </head>
  5.   <body>
  6.  
  7.     <p>These are some of the things I have written about Python:</p>
  8.     <ul>
  9.       <li>Python GUIs</li>
  10.       <li>Python IDEs</li>
  11.       <li>Python web scrapers</li>
  12.     </ul>
  13.  
  14.   </body>
  15. </html>

當(dāng)它僅僅是這三個(gè)項(xiàng)目時(shí),維護(hù)它是很簡(jiǎn)單的。但是當(dāng)我想添加第四個(gè)、第五個(gè)或第六十七個(gè)時(shí)會(huì)發(fā)生什么?我可以從包含我所有頁(yè)面列表的 CSV 文件或其他數(shù)據(jù)文件生成它,而不是手動(dòng)編碼此頁(yè)面嗎?我可以輕松地為我寫(xiě)的每個(gè)主題創(chuàng)建重復(fù)內(nèi)容嗎?我可以以編程方式更改每個(gè)頁(yè)面上的文本標(biāo)題嗎?這就是模板引擎可以發(fā)揮作用的地方。

有許多不同的選擇,今天我將與你其中分享三個(gè),順序不分先后:MakoJinja2Genshi。 

Mako

Mako 是以 MIT 許可證發(fā)布的 Python 模板工具,專為快速展現(xiàn)而設(shè)計(jì)的(與 Jinja2 不同)。Reddit 已經(jīng)使用 Mako 來(lái)展現(xiàn)他們的網(wǎng)頁(yè),它同時(shí)也是 Pyramid 和 Pylons 等 web 框架的默認(rèn)模板語(yǔ)言。它相當(dāng)簡(jiǎn)單且易于使用。你可以使用幾行代碼來(lái)設(shè)計(jì)模板;支持 Python 2.x 和 3.x,它是一個(gè)功能強(qiáng)大且功能豐富的工具,具有良好的文檔,這一點(diǎn)我認(rèn)為是必須的。其功能包括過(guò)濾器、繼承、可調(diào)用塊和內(nèi)置緩存系統(tǒng),這些系統(tǒng)可以被大型或復(fù)雜的 web 項(xiàng)目導(dǎo)入。 

Jinja2

Jinja2 是另一個(gè)快速且功能全面的選項(xiàng),可用于 Python 2.x 和 3.x,遵循 BSD 許可證。Jinja2 從功能角度與 Mako 有很多重疊,因此對(duì)于新手來(lái)說(shuō),你在兩者之間的選擇可能會(huì)歸結(jié)為你喜歡的格式化風(fēng)格。Jinja2 還將模板編譯為字節(jié)碼,并具有 HTML 轉(zhuǎn)義、沙盒、模板繼承和模板沙盒部分的功能。其用戶包括 Mozilla、 SourceForge、 NPR、 Instagram 等,并且還具有強(qiáng)大的文檔。與 Mako 在模板內(nèi)部使用 Python 邏輯不同的是,Jinja2 使用自己的語(yǔ)法。 

Genshi

Genshi 是我會(huì)提到的第三個(gè)選擇。它是一個(gè) XML 工具,具有強(qiáng)大的模板組件,所以如果你使用的數(shù)據(jù)已經(jīng)是 XML 格式,或者你需要使用網(wǎng)頁(yè)以外的格式,Genshi 可能成為你的一個(gè)很好的解決方案。HTML 基本上是一種 XML(好吧,不是精確的,但這超出了本文的范圍,有點(diǎn)賣弄學(xué)問(wèn)了),因此格式化它們非常相似。由于我通常使用的很多數(shù)據(jù)都是 XML 或其他類型的數(shù)據(jù),因此我非常喜歡使用我可以用于多種事物的工具。

發(fā)行版目前僅支持 Python 2.x,盡管 Python 3 支持存在于主干中,但我提醒你,它看起來(lái)并沒(méi)有得到有效的開(kāi)發(fā)。Genshi 遵循 BSD 許可證提供。 

示例

因此,在上面的假設(shè)示例中,我不會(huì)每次寫(xiě)新主題時(shí)都更新 HTML 文件,而是通過(guò)編程方式對(duì)其進(jìn)行更新。我可以創(chuàng)建一個(gè)模板,如下所示:

  1. <html>
  2. <head>
  3. <title>My Python articles</title>
  4. </head>
  5. <body>
  6.  
  7. <p>These are some of the things I have written about Python:</p>
  8. <ul>
  9. %for topic in topics:
  10. <li>${topic}</li>
  11. %endfor
  12. </ul>
  13.  
  14. </body>
  15. </html>

然后我可以使用我的模板庫(kù)來(lái)迭代每個(gè)主題,比如使用 Mako,像這樣:

  1. from mako.template import Template
  2.  
  3. mytemplate = Template(filename='template.txt')
  4. print(mytemplate.render(topics=("Python GUIs","Python IDEs","Python web scrapers")))

當(dāng)然,在現(xiàn)實(shí)世界的用法中,我不會(huì)將這些內(nèi)容手動(dòng)地列在變量中,而是將它們從外部數(shù)據(jù)源(如數(shù)據(jù)庫(kù)或 API)中提取出來(lái)。

這些不是僅有的 Python 模板引擎。如果你正在開(kāi)始創(chuàng)建一個(gè)將大量使用模板的新項(xiàng)目,那么你考慮的可能不僅僅是這三種選擇。在 Python 維基上查看更全面的列表,以獲得更多值得考慮的項(xiàng)目。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2020-01-29 19:13:25

Python數(shù)據(jù)對(duì)象

2020-05-15 10:22:07

Python開(kāi)發(fā)工具

2021-03-18 09:06:17

JavaScriptPythonPyExecJS

2010-07-30 17:09:28

DB2數(shù)據(jù)庫(kù)設(shè)計(jì)

2010-05-12 18:18:17

2024-08-19 00:20:00

Python

2022-11-10 16:00:21

Python機(jī)器學(xué)習(xí)編程語(yǔ)言

2020-05-29 09:48:54

Python開(kāi)發(fā)Kafka

2018-09-25 11:19:05

開(kāi)源JavaScript圖表庫(kù)

2024-05-28 00:00:10

Python模塊開(kāi)發(fā)

2009-10-26 16:22:25

寬帶接入技術(shù)

2024-05-28 14:45:00

2009-11-18 18:24:26

PHP模板

2020-12-16 19:28:07

深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)Python庫(kù)

2020-12-15 15:40:18

深度學(xué)習(xí)Python人工智能

2023-01-17 15:31:40

Python數(shù)據(jù)集數(shù)組

2022-03-13 23:31:13

JavaScript工具動(dòng)畫(huà)庫(kù)

2013-05-30 18:40:02

2011-09-20 15:19:15

Python

2024-07-12 13:49:38

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 二区在线视频 | 中文字幕av高清 | 久久久精选 | av免费网址 | 91久久| 亚洲综合精品 | 碰碰视频| 黄色免费观看 | 亚洲国产中文在线 | 亚洲精精品 | av免费在线观看网站 | 日韩精品在线观看一区二区 | 国产一区二区三区久久久久久久久 | 亚洲欧美日韩在线不卡 | 亚洲精品日韩视频 | 91视视频在线观看入口直接观看 | 亚洲国产一区二区三区, | 黄色大片免费网站 | 一区二区国产在线观看 | 亚洲国产18 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 风间由美一区二区三区在线观看 | 欧美一区二区三区在线观看 | 在线欧美亚洲 | 天天爽天天干 | 亚洲成人一区 | 免费一区 | 国产成人99 | 欧美www在线观看 | 亚洲一区在线日韩在线深爱 | 在线观看午夜视频 | 亚洲 欧美 另类 日韩 | 免费视频一区 | 亚洲午夜一区二区 | 久久久99精品免费观看 | 国产精品久久久久一区二区三区 | 岛国一区 | 久久久久国产一级毛片高清网站 | 一区二区三区亚洲 | 成人欧美日韩一区二区三区 | 天天色官网 |