2013-08-06 88 views
1

新來的MAKO,並沒有在該文檔中找到...是否有可能在Mako中創建新標籤?

一個我想與做的東西是:

<%mytag n=12> 
blabla ${x} 
</%mytag> 

其工作方式如下:

如果X[n](這裏,X[12])變量是一個int或字符串然後渲染x = X[12]
=>內容隨着X[12] = 23,它會呈現:blabla 23

否則,如果X[n]是一個列表,然後做一個for循環,重複用於x in X[n]
=>的每個值隨着X[12] = [1, 2, 'bla']的內容,它會呈現:

blabla 1 
blabla 2 
blabla bla 

請嘗試回答的主要問題(是有可能這樣做自定義標籤)如果可能的話,就如何做我想做的事提供諮詢意見之前,謝謝:)

+0

爲什麼在Mako給你所有的python時創建新的標籤? –

+0

簡單:讓它可以通過非pythonistas – lajarre

+0

@SlaterTyranus請你發表一個關於如何做我在python python代碼中給出的例子的答案? – lajarre

回答

4

"namespaces"文檔似乎來形容你是什麼之後,具體如下:?

命名空間還可以從模塊中導入常規Python函數。這些可調用對象至少需要一個參數context,它是Context的一個實例。模塊文件中的一些/ module.py可能包含可調用:

<%namespace name="hw" module="some.module"/> 

${hw.my_tag()} 

..和:

「自定義

def my_tag(context): 
    context.write("hello world") 
    return '' 

模板可以通過使用這個模塊標籤「格式主要用於識別身體內容的名稱空間功能 ,這在Mako中被稱爲」帶 嵌入式內容的def「:

<%mynamespace:somefunction arg1="some argument" args="x, y"> 
    Some record: ${x}, ${y} 
</%mynamespace:somefunction> 
相關問題