mako--模板


http://liaofeng-xiao.iteye.com/blog/1297272  mako總結

http://hi.baidu.com/smallfish_xy/blog/item/8e1fc288980ec7bb0e24445f.html   python template mako 學習筆記

http://www.iteye.com/topic/634208   在Django中使用mako

http://www.cnblogs.com/babykick/archive/2011/08/16/2140784.html  django如何集成mako模板

http://www.makotemplates.org/ mako官方

以下轉自:http://www.cnblogs.com/fatway/archive/2010/01/29/learn-mako-template.html

 

mako模板學習筆記
前面已經轉過一篇mako模板的調用方法,看了看也挺簡單的,這次主要是學習模板的編寫語法。之所以選擇mako模板,除了它的口碑好之外,主要是我受不了web.py自帶模板了,特別是控制結構那里,沒有使用結束標記,非得縮進使用才行,嚴重影響頁面的編排。因為沒有搜到有現成的中文教程,就勉強看官方的英文原版了。做個學習記錄在此。
Mako語法
mako模板可以是任何文本流形式的文件,HTML、XML都行,當然txt文本也是可以的。不過web.py里面如果使用render_mako的話還是只認HTML的。mako會從中查找變量、函數、定義塊等進行執行,而且定義塊里面可以直接編寫Python代碼。嘿嘿,神氣得很吶。
1、變量
mako中使用“${}”來定義變量格式。
    
顯示變量temp的值:${temp}
還算簡單了,Django中使用{{}},web.py中直接使用$。${}里面的內容是直接被python執行的,所以呢可以在里面加上更多的操作:

2、轉義符
在定義變量時,如果其中包含特殊符號時記得要使用轉義符轉換。u負責轉換URL地址,h轉換HTML,x對XML進行轉義,trim就是去空格啦。
 
3、控制結構
mako模板中使用%來定義控制結構,像if、for、try之類的,關鍵的就是要使用“%end<name>”來關閉控制結構。這個應該很好理解了,上個菜:   
4、注釋
這個沒什么好說的,兩個井號##是當行注釋,而<%doc>和</%doc>中間可以寫多行注釋
5、換行過濾
同python代碼中一樣,可以使用“\”來強制不換行。
6、Python代碼塊
在mako模板中可以直接寫py代碼,這是個功能很強大的地方,python代碼寫在<%和%>之間即可。
7、模塊級代碼
上面有說可以直接在mako中上一般的python代碼,還有更強大的地方,可以在引入模塊和定義函數等等,在<%! %>中定義即可。
這個模塊級別的代碼塊是在引入mako模板時直接加載到內存中的,是優先於render定義的。所以並不能直接用來進行頁面內容的輸出。我個人感覺就是如果使用<%! %>來引入了模塊和函數,就相當於在后台code中引入,可以作為發布后修改code的補丁形式。

8、標簽
mako模板中其他的一些功能都是通過標簽來定義的,定義格式為<%tagname></%tagname>。前面的多行注釋<%doc></%doc>就是標簽里的一種。
官方文檔對每個標簽都有詳細的描述,特別是像<%def>、<%namespace>、<%inherit>等都有專門的篇章進行介紹的。
<%page>  定義模板的頁面信息
<%include>  引入其他文件
<%def>  定義Python函數
<%namespace>  名稱空間,有點.NET的感覺
<%inherit>  繼承父模板
<%namespacename:defname>  調用其他名稱空間中的函數
<%call>  一樣的調用函數
<%doc>  前面有了,就是注釋
<%text>  Doc,類似於Python的三引號。使用filter定義轉義(h/u/t)
-The End-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM