tornado的模板機制是非常靈活的,也是非常強大的。和django不同,django的理念就是儘量少在模板裏面寫代碼。
那麼tornado的模板是怎麼回事呢?爲什麼會那麼強大?
tornado解析模板的時候,python解釋器是把模板內容一行行的讀取,然後直接轉換成python代碼執行的。所以你可以想象得到,tornado的模板該是多麼的放寬。
(1)幾乎所有的python語句都可以出現在模板中。
(2)可以傳遞變量,函數,任何對象
(3)<!--..{{ name }}..-->這樣的註釋,tornado還是會轉換成變量的。
(4)有各種重載機制——include,還有UI module
。。。
這些都可見tornado模板的強大,而且tornado模板的速度是很快的。
舉一個UI module的例子,ui module是什麼?在我們渲染模板的時候,可能有一些我們總要重複使用的部分,那麼我們就可以實現爲一個ui 組件,在需要的地方創建。就想一個對象一樣。這樣靈活,易拓展,效率高。
步驟呢?
(1)首先你要在setting裏建立一個映射。
這樣tornado就能找到我們的ui module對象了。
(2)然後就去modules.py文件裏創建ui module對象。這個對象繼承tornado.web.UIModule,重載render,渲染一個html網頁組件(這個僅僅是組件,不是完整的網頁)。
<div>
.........
</div>
在重載render的時候,我們可以傳一些參數進來。這樣就更靈活了。
(3)怎麼在網頁上用?如下圖:
這個ShowTime就是我們的ui對象,裏面的是render的參數。