欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
DTML參考
Zope中文社區

DTML參考

提供者:Python世界:杜文山 http://www.dohao.org/python

 

 

文檔模板標記語(yǔ)言(DTML)是一種便捷的內置于Zope中的模板和表現語(yǔ)言。這個(gè)文檔涉及所有的DTML標記符和它們的使用方法。

 

1.     call:調用一個(gè)方法

call標記符使你能夠調用一個(gè)方法而不把結果插入到DTML。

 

句法

 

call標記符句法:

 

<dtml-call Variable|expr=”Expression”>

 

如果call標記符使用一個(gè)變量,DTML自動(dòng)傳遞方法的參數——就像var標記符那樣。如果在一個(gè)表達式里指定方法,那么你必須親自傳遞參數。

 

 

例子

 

用變量名稱(chēng)調用:

 

<dtml-call UpdateInfo>

 

它調用UpdateInfo 對象,自動(dòng)傳遞參數。

 

用表達式調用:

 

<dtml-call expr=RESPONSE.setHeader(‘content-type’, ‘text/plain’)”>

 

參見(jiàn)

var tag

 

2.     comment: 注釋DTML

 

comment 標記符使你能夠用注釋為DTML做注解。你還可以用它把DTML注釋掉,讓DTML標記符暫時(shí)失效。

 

句法

 

comment 標記符句法:

 

<dtml-comment>

</dtml-comment>

 

comment 標記符是一種塊標記符。塊的內容不被執行,并且不被插入到DTML輸出中。

 

例子

 

注解DTML

 

<dtml-comment>

  This content is not executed and does not appear in the

  output.

</dtml-comment>

 

注釋掉DTML

 

<dtml-comment>

  This DTML is disabled and will not be executed.

  <dtml-call someMethod>

</dtml-comment>

 

 

3.     FunctionsDTML函數

 

DTML效用函數提供一些Python內建函數和一些DTML特效函數。

 

 

函數

 

l        abs(number)——返回數字number的絕對值。參數可以為一個(gè)普通整數或長(cháng)整數或一個(gè)點(diǎn)數。如果參數是一個(gè)復數,則返回它的量值。

l        chr(integer)——返回一個(gè)字符,這個(gè)字符的ASCII 代碼是參數integer。例如,chr(97)返回字符a。相反的函數為ord()。參數必需在0 255范圍內,如果integer 超出了那個(gè)范圍就引發(fā)一個(gè)ValueError 錯誤。

l        DateTime()——返回一個(gè)已知構造參數的Zope DateTime對象。有關(guān)構造參數的更多信息請參見(jiàn)附錄B“API參考中的“DateTime類(lèi)部分。

l        divmod(number, number)——采用兩個(gè)數字作為參數并在使用長(cháng)除法時(shí)返回一對由它們的商和余數組成的數字。對于混合操作數類(lèi)型,應用二進(jìn)制算法操作符規則。對于普通和長(cháng)整數,結果等同于(a / b, a % b)。對于點(diǎn)數,結果是 (q, a % b),其中qmath.floor(a / b);然而,它可能會(huì )是1,小于那個(gè)數。在任何情況中,q * b + a % b 非常接近a。如果a % b是非0,它有和b相同的符號并且0 <= abs(a % b) < abs(b)。

l        float(number)——把一個(gè)字符串或一個(gè)數字轉換成浮點(diǎn)數。如果參數是一個(gè)字符串,它必需包含一個(gè)可能帶有符號的小數或者用空格嵌入的浮點(diǎn)數;它的作用等同于string.atof(number)。另外,參數可以是一個(gè)普通整數或長(cháng)整數或者一個(gè)點(diǎn)數,如果是浮點(diǎn)數,返回相同的值(在Python的浮點(diǎn)精度以?xún)龋?/span>

l        getattr(object, string)——返回對象的被指定的屬性的值。名稱(chēng)必需為一個(gè)字符串。如果string 是對象中的某個(gè)屬性的名稱(chēng),結果就是那個(gè)屬性的值。例如,getattr(x, "foobar) 等同于x.foobar。如果被指定的屬性不存在,提供了默認值就返回默認值,否則就引發(fā)一個(gè)AttributeError 錯誤。

l        getitem(variable, render=0)——返回一個(gè)DTML變量的值。如果render 為真,變量就被呈遞。見(jiàn)render 函數。

l        hasattr(object, string)——參數是一個(gè)對象和一個(gè)字符串。如果這個(gè)字符串是對象的某個(gè)屬性的名稱(chēng),結果為1,否則結果為0。(這是通過(guò)調用getattr(object, name) 和查看它是否引發(fā)一個(gè)例外來(lái)實(shí)現的。)

l        hash(object)——返回對象的散列值(如果它有的話(huà))。散列值是整數。它們用于在一個(gè)字典查找期間內快速比較字典鍵。相等的數字值有相同的散列值(即使它們屬于不同的類(lèi)型,例如11.0)。

l        has_key(variable)——如果DTML名稱(chēng)空間包含variable則返回真。

l        hex(integer)——把一個(gè)整數(任意大?。┺D換成十六進(jìn)制的字符。結果是一個(gè)有效的Python表達式。注意:這常常產(chǎn)生一個(gè)無(wú)符號的文字。例如在32-bit 機器上,hex(-1) 結果為0xffffffff。當在一個(gè)機器上使用相同的單詞大小求值時(shí),這個(gè)文字認為是-1;對于不同的單詞大小,它可能會(huì )變成大的正數或引發(fā)一個(gè)OverflowError 例外。

l        int(number)——把一個(gè)字符串或數字轉換成一個(gè)普通整數。如果參數是一個(gè)字符串,它必須包含一個(gè)可能帶有符號的十進(jìn)制數字,這個(gè)數字可以作為一個(gè)Python整數提供,并且通過(guò)空格嵌入其中。這個(gè)行為等同于 ‘string.atoi(number[, radix]) 。radix 參數給出了轉換的基數并且可以是236 范圍內的任何整數。如果指定了radix并且number不是一個(gè)字符串,引發(fā)一個(gè) TypeError 錯誤。另外,參數可以是一個(gè)普通整數或長(cháng)整數或浮點(diǎn)數。點(diǎn)數轉換成整數按照 C 語(yǔ)言的方法來(lái)定義;通常,轉換是把小數點(diǎn)后面數字趨向為零。

l        len(sequence)——返回對象的長(cháng)度(數據項的數量)。參數可以為一個(gè)序列或一個(gè)映射(字典)。

l        max(s)——s 參數(例如,一個(gè)字符串,元組或列表)唯一時(shí)返回非空序列中的最大項。當有多個(gè)參數,它返回參數中的最大一個(gè)。

l        min(s)——s 參數(例如,一個(gè)字符串,元組或列表)唯一時(shí)返回非空序列中的最小項。當有多個(gè)參數時(shí),它返回參數中的最大一個(gè)。

l        namespace([name=value]...)——返回一個(gè)新的DTML名稱(chēng)空間對象。關(guān)鍵字參數name=value 被加入到新的名稱(chēng)空間中。

l        oct(integer)——把一個(gè)整數(任意大?。┺D換成八進(jìn)制字符。結果是一個(gè)有效的Python表達式。注意:這總是生成一個(gè)無(wú)正負符號的文字。例如,在一個(gè)32-bit 機器上, oct(-1) 生成037777777777。當在一個(gè)具有相同單詞大小的機器上求值時(shí),這個(gè)文字結果為-1;對于一個(gè)不同的單詞大小,它可能生成一個(gè)大整數或引發(fā)一個(gè)OverflowError 例外。

l        ord(character)——返回某個(gè)字符的ASCII 值。例如,ord("a") 返回整數97 。相反的函數為chr() 。

l        pow(x, y [,z])——返回xy次方。如果提供了z,它首先求xy方,再對z求余,返回結果(執行效率高于 ‘pow(x, y) % z’)。參數必須為數字類(lèi)型。對于混合操作數類(lèi)型,應用二進(jìn)制算法操作符規則。有效的操作數類(lèi)型也是結果的類(lèi)型,如果結果不表現為這種類(lèi)型,函數引發(fā)一個(gè)例外,例如pow(2, -1) pow(2, 35000)是不允許的。

l        range([start,] stop [,step])——這是一個(gè)用于創(chuàng )建含有算術(shù)級數的列表的通用函數。參數必需為普通整數。如果step 參數被忽略,默認為1。如果start 參數被忽略,默認為0。返回的完整形式是一個(gè)普通整數列表 ‘[sstart, start + step, start + 2 * step, ...]。如果step 是正數,最后一個(gè)元素是小于stop的最大‘start + i step ;如果step 是一個(gè)負數,最后一個(gè)元素是大于stop的最大‘start + i step 。step 不得為0(否則引發(fā)一個(gè)ValueError 錯誤)。

l        round(x [,n])——返回x被四舍五入后的浮點(diǎn)值,它截至小數點(diǎn)后n位。如果n被忽略,它默認為零。結果是一個(gè)點(diǎn)數。值被四舍五入到最接近的10的負n處的倍數;如果兩個(gè)倍數一樣近,四舍五入選擇遠離0的那個(gè)(例如,round (0.5)1.0 ,round (-0.5) -1.0 。

l        render(object)——呈遞對象。對于DTML 對象,它使用當前的名稱(chēng)空間對DTML求值。對于其他對象,它等同于str(object) 。

l        reorder(s [,with] [,without])——s中的數據項根據在with中給定的順序重新排序,不包括在without中提到的數據項。s中沒(méi)有在with中提到的數據項被刪除。s、withwithout都是字符序列或鍵值元組序列,對鍵進(jìn)行排序。這個(gè)函數對于構建有序的選擇列表是有用的。

l        SecurityCalledByExecutable()——如果當前的對象(例如DTML文檔或方法)由一個(gè)可執行對象(例如其它的DTML文檔或方法,腳本或SQL方法)調用則返回真。

l        SecurityCheckPermission(permission, object)——檢查安全關(guān)聯(lián)是否允許給定對象上的給定許可。例如‘ecurityCheckPermission(‘Add Documents, Images, and Files, this()),如果當前的用戶(hù)被授權能夠在當前位置中創(chuàng )建文檔、圖像和文件,這個(gè)函數將返回真。

l        SecurityGetUser()——返回當前用戶(hù)對象。通常,它等同于REQUEST.AUTHENTICATED_USER 對象。然而,AUTHENTICATED_USER對象是不安全的,這是因為它可以被替換。

l        SecurityValidate([object] [,parent] [,name] [,value])——如果當前用戶(hù)可以訪(fǎng)問(wèn)value則返回真。object 是被訪(fǎng)問(wèn)的變量所在的對象,parent 是變量的容器,name 是用于訪(fǎng)問(wèn)變量的名稱(chēng)(例如,如果它通過(guò)‘getattr’獲得)。你可以忽略其中的一些參數。但是,最好提供所有的參數。

l        SecurityValidateValue(object)——如果對于當前用戶(hù)是可訪(fǎng)問(wèn)的則返回真。這個(gè)函數等同于調用SecurityValidate(None, None, None, object) 。

l        str(object)——返回一個(gè)包含一個(gè)適當的可打印出的表示對象的字符串。對于字符串,它返回字符串本身。

l        test(condition, result [,condition, result]... [,default])——對一對或多對condition, result 進(jìn)行測試并返回第一個(gè)條件為真的的結果。只返回一個(gè)結果,即使有多個(gè)條件為真。如果沒(méi)有條件為真并且給定默認值,那么就返回默認值。如果沒(méi)有條件為真并且沒(méi)有默認值,返回None 。

 

 

屬性

 

l        None——None 對象等同于Python的內建對象None。它通常用于表示一個(gè)空或假值。

 

 

參見(jiàn)

string module

random module

math module

Python 內建函數 (http://www.python.org/doc/current/lib/built-in-funcs.html)

 

4.      if:測試條件

根據條件,if標記符使你能夠測試條件并且采取不同的行為。if標記符反映Python if/elif/else 條件測試語(yǔ)句。

 

句法

 

if標記符句法:

<dtml-if ConditionVariable|expr=”ConditionExpression”>

[<dtml-elif ConditionVariable|expr=”ConditionExpression”>]

 ...

[<dtml-else>]

</dtml-if>

 

if標記符是一種塊標記符。if標記符和選擇的elif 標記符使用一個(gè)條件變量名稱(chēng)或一個(gè)條件表達式,但只能是其中的一種。如果條件名稱(chēng)或表達式的值為真,那么if塊被執行。真意味著(zhù)不是0、空字符串或一個(gè)空列表。如果條件變量沒(méi)有被找到,那么這個(gè)條件被認為是假。

如果初始的條件為假,則按次序測試elif 條件。如果elif 條件為真,那么塊中的內容就被執行。最終如果ifelif 條件沒(méi)有為真的,就執行可選的else塊。則只有一個(gè)塊被執行。

 

例子

 

測試一個(gè)變量:

 

<dtml-if snake>

  The snake variable is true

</dtml-if>

 

測試表達式條件:

 

<dtml-if expr=”num > 5”>

  num is greater than five

<dtml-elif expr=”num < 5”>

  num is less than five

<dtml-else>

  num must be five

</dtml-if>

 

參見(jiàn)

Python指南: if 語(yǔ)句

(http://www.python.org/doc/current/tut/node6.html#SECTION006100000000000000000)

 

 

5.      in:對序列進(jìn)行循環(huán)

in標記符可以讓你有力的控制循環(huán)序列和執行批處理。

 

句法

 

in標記符句法:

 

<dtml-in SequenceVariable|expr="SequenceExpression”>

[<dtml-else>]

</dtml-in>

 

in塊針對序列變量或序列表達式中的每一項重復一次。當前項在每次執行in塊時(shí)被推入到DTML名稱(chēng)空間中。

如果在序列中沒(méi)有數據項是變量或表達式,則執行可選的else塊。

 

屬性

 

l        mapping——疊代映射對象而不是實(shí)例。這使得映射對象的值可以作為DTML變量被訪(fǎng)問(wèn)。

l        reverse——翻轉序列。

l        sort=string——按照給定的屬性名稱(chēng)對序列排序。

l        start=int——被顯示的第一項的數字,其中數據項計數從1開(kāi)始。

l        end=int——被顯示的最后一項的數字,其中數據項計數從1開(kāi)始。

l        size=int——批處理的大小。

l        skip_unauthorized——如果遇到一個(gè)沒(méi)有授權的數據項引發(fā)一個(gè)例外。

l        orphan=int——預期最小批處理大小。

l        overlap=int——批處理塊之間相互重疊的數據項的數字。默認為3。

l        previous——如果有前一個(gè)批處理塊則疊代一次。為前一個(gè)序列設置批處理變量。

l        next——如果有下一個(gè)批處理塊則疊代一次。為下一個(gè)序列設置批處理變量。

 

 

標記符變量

 

當前數據項變量。

這些變量描述當前的數據項:

 

l        sequence-item——當前的數據項。

l        sequence-key——當前鍵字。當循環(huán)表單元組(key,value)時(shí),in標記符把它們轉換成 (sequence-key, sequence-item) 。

l        sequence-index——當前數據項從0開(kāi)始的索引。

l        sequence-number——當前數據項從1開(kāi)始的索引。

l        sequence-roman——當前數據項以小寫(xiě)羅馬數字表示的索引。

l        sequence-Roman——當前數據項以大寫(xiě)羅馬數字表示的索引。

l        sequence-letter——當前數據項以小寫(xiě)字母表示的索引。

l        sequence-Letter——當前數據項以大寫(xiě)字母表示的索引。

l        sequence-start——如果當前數據項為第一個(gè)數據項則為真。

l        sequence-end——如果當前數據項為最后一個(gè)數據項則為真。

l        sequence-even——如果當前數據項索引為偶數則為真。

l        sequence-odd——如果當前數據項索引為奇數則為真。

l        sequence-length——序列的長(cháng)度。

l        sequence-var-variable——在當前數據項中的一個(gè)變量。例如,sequence-var-title是當前數據項的標題變量。通常,你可以直接訪(fǎng)問(wèn)這個(gè)變量,這是因為當前的數據項被推到DTML名稱(chēng)空間中。而且,當顯示前一個(gè)和下一個(gè)批處理信息時(shí)這些變量就可以被用上。

l        sequence-index-variable——當前數據項的變量索引。

 

 

總結變量

 

這些變量總結了有關(guān)數據項變量數字方面的信息。要使用這些變量,你必須循環(huán)含有數字變量的對象(比如數據庫查詢(xún)結果)。

 

l        total-variable——一個(gè)數據項變量的所有實(shí)例的總數。

l        count-variable——一個(gè)數據項變量的實(shí)例數。

l        min-variable——一個(gè)數據項變量的最小值。

l        max-variable——一個(gè)數據項變量的最大值。

l        mean-variable——一個(gè)數據項變量的平均值。

l        variance-variable——一個(gè)數據項的count-1 自由度方差。

l        variance-n-variable——一個(gè)數據項變量的n自由度方差。

l        standard-deviation-variable——一個(gè)數據項變量的count-1 自由度標準偏差

l        standard-deviation-n-variable——一個(gè)數據項變量的n自由度標準偏差。

 

 

分組變量

 

這些變量使你能夠跟蹤當前數據項變量的變化:

l        first-variable——如果當前數據項是第一個(gè)具有特定變量值的數據項則為真。

l        last-variable——如果當前數據項是最后一個(gè)具有特定變量值的數據項則為真。

 

批處理變量

l        sequence-query——不包含start變量的查詢(xún)字符。你可以使用這個(gè)變量來(lái)構建與下一個(gè)和前一個(gè)批處理塊的鏈接。

l        sequence-step-size——批處理塊的大小。

l        previous-sequence——如果當前批處理塊不是第一個(gè)則為真。注意,這個(gè)變量只對第一次循環(huán)迭代為真。

l        previous-sequence-start-index——前一個(gè)批處理塊的開(kāi)始索引。

l        previous-sequence-start-number——前一個(gè)批處理塊的開(kāi)始數字。注意,它等同于previous-sequence-start-index + 1。

l        previous-sequence-end-index——前一個(gè)批處理塊的結束索引。

l        previous-sequence-end-number——前一個(gè)批處理塊的結束數字。注意,它等同于previous-sequence-end-index + 1。

l        previous-sequence-size——前一個(gè)批處理塊的大小。

l        previous-batches——帶有前一個(gè)批處理塊所有相關(guān)信息的映射對象序列。每個(gè)映射對象有三個(gè)鍵:batch-start-index、 batch-end-index batch-size 。

l        next-sequence——如果當前批處理塊不是最后一個(gè)批處理塊則為真。注意,這個(gè)變量只對最后的循環(huán)迭代才為真。

l        next-sequence-start-index——下一個(gè)序列的開(kāi)始索引。

l        next-sequence-start-number——下一個(gè)序列的開(kāi)始數字。注意,這等同于next-sequence-start-index + 1。

l        next-sequence-end-index——下一個(gè)序列的結束索引。

l        next-sequence-end-number——下一個(gè)序列的結束數字。注意,這等同于 next-sequence-end-index + 1。

l        next-sequence-size——下一個(gè)索引的大小。

l        next-batches——帶有下一個(gè)批處理塊所有相關(guān)信息的映射對象序列。每個(gè)映射對象有三個(gè)鍵:batch-start-index, batch-end-index, and batch-size。

 

例子

 

循環(huán)下級對象:

 

<dtml-in objectValues>

  title: <dtml-var title><br>

</dtml-in>

 

循環(huán)元組列表(key,value):

 

<dtml-in objectItems>

  id: <dtml-var sequence-key>, title: <dtml-var title><br>

</dtml-in>

 

創(chuàng )建具有交替顏色的表格單元:

 

<table>

<dtml-in objectValues>

<tr <dtml-if sequence-odd>bgcolor=“#EEEEEE”

    <dtml-else>bgcolor=“#FFFFFF”

    </dtml-if>

  <td><dtml-var title></td>

</tr>

</dtml-in>

</table>

 

基本批處理:

 

<p>

<dtml-in largeSequence size=10 start=start previous>

  <a href=“<dtml-var absolute_url><dtml-var sequence-query>

start=<dtml-var previous-sequence-start-number>“>Previous</a>

</dtml-in>

 

<dtml-in largeSequence size=10 start=start next>

  <a href=“<dtml-var absolute_url><dtml-var sequence-query>

start=<dtml-var next-sequence-start-number>“>Next</a>

</dtml-in>

</p>

 

<p>

<dtml-in largeSequence size=10 start=start>

  <dtml-var sequence-item>

</dtml-in>

</p>

 

這個(gè)例子創(chuàng )建前一個(gè)和下一個(gè)鏈接,從而在批處理塊之間跳轉。注意,通過(guò)使用sequence-query,當你在批處理塊之間跳轉時(shí),你不會(huì )丟失任何任何GET變量。

 

6.     let:定義DTML變量

 

let標記符定義DTML名稱(chēng)空間里的變量。

 

句法

 

let標記符句法:

 

<dtml-let [Name=Variable][Name=”Expression”]...>

</dtml-let>

 

let標記符是一種塊標記符。變量通過(guò)標記符參數被定義。在let塊被執行的同時(shí),定義的變量被推進(jìn)到DTML名稱(chēng)空間。變量通過(guò)屬性定義。let標記符可以有一個(gè)或多個(gè)任意命名的屬性。如果屬性用雙引號定義,它們被認為是表達式。否則,它們按照名稱(chēng)查找相應變量。屬性按順序處理,因此后邊的屬性可以引用和覆蓋前邊的屬性。

 

 

例子

 

基本用法:

<dtml-let name=”‘Bob‘” ids=objectIds>

  name: <dtml-var name>

  ids: <dtml-var ids>

</dtml-let>

 

in標記符一起使用let標記符:

 

<dtml-in expr=“(1,2,3,4)”>

  <dtml-let num=sequence-item

            index=sequence-index

            result=”num*index”>

    <dtml-var num> * <dtml-var index> = <dtml-var result>

  </dtml-let>

</dtml-in>

 

這會(huì )生成:

1 * 0 = 0

2 * 1 = 2

3 * 2 = 6

4 * 3 = 12

 

參見(jiàn)

with 標記符

 

 

 

7.      mathDTML數學(xué)函數

數學(xué)函數模塊提供三角和其它數學(xué)函數。它是標準的Python模塊。

 

函數

l        acos(x)——返回xarc cosine 值。

l        asin(x)——返回xarc sine 值。

l        atan(x)——返回xarc tangent 值。

l        atan2(x, y)——返回atan(y / x) 值。

l        ceil(x)——以實(shí)數形式返回x的上限。

l        cos(x)——返回xcosine值。

l        cosh(x)——返回x的雙曲線(xiàn) cosine 值。

l        exp(x)——返回e**x 。

l        fabs(x)——返回實(shí)數x的絕對值。

l        floor(x)——以實(shí)數形式返回x的基數。

l        fmod(x, y)——返回fmod(x, y) ,它由平臺的C庫定義。注意,Python表達式x % y 不返回相同的結果。

l        fexp(x)—— (m, e)對的形式返回x的尾數和指數。m是一個(gè)點(diǎn)數,e是一個(gè)整數,比如‘x == m * 2*e 。如果x為零,它返回 (0.0, 0),其他情況下返回0.5 <= abs(m) < 1 。

l        hypot(x, y)——返回 歐幾里得幾何學(xué)的距離,sqrt(x*x + y*y) 。

l        ldexp(x, y)——返回x * (2**i) 。

l        log(x)——返回x的自然對數值。

l        log10(x)——返回以10為底的x的對數。

l        modf(x)——返回x的分數和整數部分。兩個(gè)結果都執行xsine 運算。整數部分以實(shí)數形式返回。

l        pow(x, y)——返回xy。

l        sin(x)——返回xsine 值。

l        sinh(x)——返回x的雙曲線(xiàn)sine 值。

l        sqrt(x)——返回x的平方根。

l        tan(x)——返回xtangent 值。

l        tanh(x)——返回x的雙曲線(xiàn)tangent 。

 

 

屬性

l        e——數學(xué)常量e

l        pi——數學(xué)常量pi

 

 

參見(jiàn)

Python 數學(xué)模塊 (http://www.python.org/doc/current/lib/module-math.html)

 

 

 

8.      mime:MIME格式數據

mime 標記符使你能夠創(chuàng )建MIME 編碼數據。它主要用于在sendmail 標記符內格式電子郵件。

 

 

句法

 

mime 標記符句法:

 

<dtml-mime>

[<dtml-boundry>]

...

</dtml-mime>

 

mime 標記符是一種塊標記符。塊可以用一個(gè)或多個(gè)boundry 標記符分隔來(lái)創(chuàng )建多部分MIME 消息。mime 標記符可以簽套。mime 標記符主要用在sendmail 標記符里。

 

 

屬性

 

所有的mime boundry 標記符都有相同的屬性:

 

l        encode=string——MIME 內容傳輸編碼報頭,默認為base64。有效的編碼選項包括base64、 quoted-printable、 uuencode、 x-uuencode、 uue、 x-uue 7bit。在塊上不編碼,數據被假定為一種有效的MIME 格式。

l        type=string——MIME 內容-類(lèi)型報頭。

l        type_expr=string——作為變量表達式的MIME 內容-類(lèi)型報頭。你不能同時(shí)使用type type_expr 。

l        name=string——MIME  內容-類(lèi)型報頭名稱(chēng)。

l        name_expr=string——作為變量表達式的MIME 內容-類(lèi)型報頭名稱(chēng)。你不能同時(shí)使用name name_expr。

l        disposition=string——MIME 內容-部署報頭。

l        disposition_expr=string——作為變量表達式的MIME 內容-部署報頭。你不能同時(shí)使用disposition disposition_expr。

l        filename=string——MIME 內容-部署報頭文件名。

l        filename_expr=string——作為變量表達式的MIME 內容-部署報頭文件名。你不能同時(shí)使用filename filename_expr 。

l        skip_expr=string——一個(gè)變量表達式,如果為真就跳過(guò)塊。你可以使用這個(gè)屬性來(lái)有選擇性的包含MIME 塊。

 

 

例子

 

發(fā)送一個(gè)文件附件:

 

<dtml-sendmail>

To: <dtml-recipient>

Subject: Resume

<dtml-mime type=”text/plain” encode=“7bit”>

 

Hi, please take a look at my resume.

 

<dtml-boundary type=”application/octet-stream” disposition=”attachment”

encode=”base64” filename_expr=”resume_file.getId()”>

<dtml-var expr=”resume_file.read()”></dtml-mime>

</dtml-sendmail>

 

參見(jiàn)

Python Library: mimetools (http://www.python.org/doc/current/lib/module-mimetools.html)

 

 

9.     raise:引發(fā)一個(gè)例外

raise標記符引發(fā)一個(gè)例外,反映Pythonraise語(yǔ)句。

 

句法

 

raise標記符語(yǔ)句:

 

<dtml-raise ExceptionName|ExceptionExpression>

</dtml-raise>

 

raise標記符是一種塊標記符。它引發(fā)一個(gè)例外。例外可以是一個(gè)exception 類(lèi)或一個(gè)字符串。標記符的內容作為錯誤的值。

 

例子

 

引發(fā)一個(gè)KeyError

 

<dtml-raise KeyError></dtml-raise>

 

引發(fā)HTTP 404 錯誤:

 

<dtml-raise NotFound>Web Page Not Found</dtml-raise>

 

參見(jiàn)

 

try 標記符

Python 指南: Errors and Exceptions

(http://www.python.org/doc/current/tut/node10.html)

Python 內建例外 (http://www.python.org/doc/current/lib/module-exceptions.html)

 

 

10.    random: DTML偽隨機數函數

random 模塊提供了偽隨機數函數。用它,你可以生成隨機數字以及從序列中選擇隨機元素。這個(gè)模塊是一個(gè)標準Python模塊。

 

函數

l        choice(seq)——從非空序列seg中選擇一個(gè)隨機元素,并返回它。

l        randint(a, b)——返回一個(gè)隨機整數N,并且a<=N<=b 。

l        random()——返回下一個(gè)[0.0…1.0]范圍內的隨機點(diǎn)數。

l        seed(x, y, z)——從整數x,yz初始隨機數字生成器。當這個(gè)模塊首次被導入,隨機數字使用從當前時(shí)間獲得的值初始化。

l        uniform(a, b)——返回一個(gè)隨機實(shí)數N,并且 a<=N<b 。

 

參見(jiàn)

Python 隨機模塊 (http://www.python.org/doc/current/lib/module-whrandom.html)

 

 

11.             return: 返回數據

return 標記符停止執行DTML并返回數據。它反映Pythonreturn 語(yǔ)句。

 

句法

 

return 標記符句法:

 

<dtml-return ReturnVariable|expr=”ReturnExpression”>

 

它停止執行DTML并返回一個(gè)變量或表達式。DTML輸出不被返回。通常,一個(gè)返回表達式比起返回一個(gè)變量更為有用。腳本使得這個(gè)標記符在很大程度上荒廢了。

 

例子

 

返回一個(gè)變量:

 

<dtml-return result>   

 

返回一個(gè)Python字典:

 

<dtml-return expr=”{‘hi’:200, ’lo’:5}”>

 

 

12.          sendmail: 通過(guò)SMTP發(fā)送郵件

sendmail 標記符使用SMTP發(fā)送一個(gè)電子郵件信息。

 

句法

 

sendmail 標記符句法:

 

<dtml-sendmail>

</dtml-sendmail>

 

sendmail 標記符是一種塊標記符。它需要一個(gè)郵件主機或一個(gè)smtphost 參數,但是不是兩者都需要。標記符塊作為一條郵件消息被發(fā)送。塊的開(kāi)始描述電子郵件報頭。報頭和正文之間用一個(gè)空行分開(kāi)。To、 From Subject報頭可以通過(guò)標記符參數設置。

 

屬性

l        mailhost——用于發(fā)送電子郵件的Zope郵件主機對象的名稱(chēng)。你不能同時(shí)指定mailhost smtphost 。

l        smtphost——用于發(fā)送電子郵件的SMTP服務(wù)器的名稱(chēng)。你不同同時(shí)指定mailhost smtphost 。

l        port——如果使用smtphost 屬性,那么port 屬性用于指定連接的端口號。如果沒(méi)有指定,那么就使用端口 25 。

l        mailto——接收地址或一個(gè)用逗號分開(kāi)的接收地址列表。這也可以用 To 報頭指定。

l        mailfrom——發(fā)送者地址。還可以用From 報頭指定。

l        subject——電子郵件主題。還可以用Subject 報頭指定。

 

 

例子

 

使用一個(gè)mailhost發(fā)送一個(gè)電子郵件:

 

<dtml-sendmail mailhost=”mailhost”>

To: <dtml-var recipient>

From: <dtml-var sender>

Subject: <dtml-var subject>

 

Dear <dtml-var recipient>,

 

You order number <dtml-var order_number> is ready.

Please pick it up at your soonest convenience.

</dtml-sendmail>

 

參見(jiàn)

 

RFC 821 (SMTP Protocol) (http://www.ietf.org/rfc/rfc0821.txt)

mime 標記符

 

 

13.             sqlgroup:格式復雜的SQL表達式

sqlgroup 標記符格式復雜的布爾SQL表達式。你可以用它配合sqltest 標記符來(lái)構建動(dòng)態(tài)SQL查詢(xún),使之滿(mǎn)足需要。這個(gè)標記符被用在SQL方法中。

 

句法

 

sqlgroup 標記符句法:

 

<dtml-sqlgroup>

[<dtml-or>]

[<dtml-and>]

...

</dtml-sqlgroup>

 

sqlgroup 標記符是一種塊標記符。它用一個(gè)或多個(gè)可選的orand標記符劃分成塊。sqlgroup 標記符可以簽套,從而產(chǎn)生復雜的邏輯。

 

屬性

l        required=boolean——指出這組SQL語(yǔ)句是否為必需的。如果它不是必需的并且為空,它就不在DTML輸出中顯示。

l        where=boolean——如果為真,則包含字符串 “Where” 。這用于一個(gè)SQL select 查詢(xún)中的最外面的sqlgroup 標記符。

 

 

例子

 

例子用法:

 

select * from employees

<dtml-sqlgroup where>

  <dtml-sqltest salary op=gt type=float optional>

<dtml-and>

  <dtml-sqltest first op=eq type=string multiple optional>

<dtml-and>

  <dtml-sqltest last  op=eq type=string multiple optional>

</dtml-sqlgroup> 

 

如果first Bob ,last Smith,McDonald,它處理結果為:

 

select * from employees

where

(first=‘bob’

 and

 last in (‘Smith’, ‘McDonald’)

)

 

如果salary 50000 ,last Smith,它處理結果為:

 

select * from employees

where

(salary > 50000.0

 and

 last=‘Smith’

)

 

簽套的sqlgroup 標記符:

 

select * from employees

<dtml-sqlgroup where>

  <dtml-sqlgroup>

     <dtml-sqltest first op=like type=string>

  <dtml-and>

     <dtml-sqltest last op=like type=string>

  <dtml-sqlgroup>

<dtml-or>

  <dtml-sqltest salary op=gt type=float>

</dtml-sqlgroup>

 

給定例子參數,這個(gè)模板處理的結果是這樣的SQL

 

select * form employees

where

(

  (

   name like ‘A*’

   and

   last like ‘Smith’

   )

 or

 salary > 20000.0

)

 

參見(jiàn)

sqltest 標記符

 

14.             sqltest: 格式SQL條件測試

sqltest 標記符把一個(gè)條件測試插入到SQL代碼中。它對一個(gè)列和一個(gè)變量進(jìn)行測試。這個(gè)標記符用在SQL方法里。

 

句法

 

sqltest 標記符句法:

 

<dtml-sqltest Variable|expr=”VariableExpression”>

 

sqltest 標記符是一種獨立標記符。它插入一段SQL條件測試語(yǔ)句。它用于構建SQL查詢(xún)。sqltest 標記符恰當的避開(kāi)了被插入的變量。被指定的變量或變量表達式和SQL列之間使用指定的比較操作符進(jìn)行比較。

 

屬性

l        type=string——變量的類(lèi)型。有效的類(lèi)型包括string、 int、 float nb。nb含義是非空字符串。類(lèi)型屬性是必需的并且被用于把一個(gè)被插入的變量轉換成恰當的類(lèi)型。

l        column=string——用來(lái)進(jìn)行測試的SQL列的名稱(chēng)。這個(gè)屬性默認為變量名稱(chēng)。

l        multiple=boolean——如果為真,那么變量可以是一個(gè)用來(lái)測試列的值序列。

l        optional=boolean——如果為真,那么測試是可選擇項,并且如果變量為空或不存在,它將不被處理。

l        op=string——比較操作。有效的比較包括以下:

 

n         eq—— 等于

n         gt—— 大于

n         lt—— 小于

n         ne—— 不等于

n         ge—— 大于或等于

n         le—— 小于或等于

 

默認的比較是等于。如果比較不被識別,就用它。這樣,你總是可以這樣使用比較。

 

例子

 

基本用法:

select * from employees

  where <dtml-sqltest name type=”string”>

 

如果name 變量是Bob,那么這會(huì )呈遞為:

select * from employees

  where name = ‘bob’

 

多個(gè)值:

select * from employees

  where <dtml-sqltest empid type=int multiple>

 

如果empid 變量是(12,14,17),那么這會(huì )呈遞為:

select * from employees

  where empid in (12, 14, 17)

 

參見(jiàn)

 

sqlgroup 標記符

sqlvar 標記符

 

 

15.    sqlvar:插入SQL變量

sqlvar 標記符把變量插入到SQL代碼中。這個(gè)標記符用在SQL方法中。

 

句法

 

sqlvar 標記符句法:

<dtml-sqlvar Variable|expr=”VariableExpression”>

 

sqlvar 標記符是一種獨立標記符。就像var 標記符,sqlvar 標記符查找變量并插入它。不像var 標記符,格式選項是為了用于調整SQL代碼。

 

屬性

l        type=string——變量的類(lèi)型。有效的類(lèi)型包括string、 int,、 float nb。nb含義為非空字符串。類(lèi)型屬性是必需的并且被用來(lái)把一個(gè)被插入的變量轉換成恰當的類(lèi)型。

l        optional=boolean——如果為真,并且變量為空或者不存在,那么不插入任何內容。

 

例子

 

基本用法:

select * from employees

  where name=<dtml-sqlvar name type=”string”>

 

這段SQL引用name 字符串變量

 

參見(jiàn)

sqltest 標記符

 

16.          stringDTML字符串函數

字符串模塊提供了字符處理、轉換和搜索函數。它是一個(gè)標準的Python模塊。

 

函數

l        atof(s)——把一個(gè)字符串轉換成一個(gè)點(diǎn)數。字符串必需在字面上有Python中的浮點(diǎn)標準句法,可選擇在前面添加有符號(“+” “-”)。注意,這個(gè)行為在傳遞一個(gè)字符串時(shí)等同于內建的函數float()。

l        atoi(s [,base])——把字符串轉換成一個(gè)給定基數中的整數。字符串必需由一個(gè)或多個(gè)數字組成,可選擇在前面添加有符號(“+” “-”)?;鶖的J為10。如果它為0,一個(gè)默認基數被選擇,取決于字符串的頭幾個(gè)字符(刪去符號以后): “0x” 或者 “0X”意味著(zhù)16, “0” 意味著(zhù) 8,其它的意味著(zhù)10。如果基數是16,首字為 “0x” “0X”總是可以接受的,盡管不是必須的。

l        atol(s, [,base])——把字符串轉換成一個(gè)給定基數中的長(cháng)整數。字符串必需由一個(gè)或多個(gè)數字組成,可選擇在前面添加有符號(“+” “-”)?;鶖祬档暮x和atoi()中的一樣。結尾是"l "L是不允許的,除了基數是0以外。

l        capitalize(word)——大寫(xiě)參數的第一個(gè)字符。

l        capwords(s)——使用split()把參數分割成單詞,大寫(xiě)每個(gè)單詞使用capitalize(),連接大寫(xiě)化的單詞使用join()。注意,它把多個(gè)連續空格用一個(gè)空格替換并且刪除頭部和尾部的空格。

l        find(s, sub [,start [,end]])——返回在s里找到字符串子集sub處的最低索引,這樣一來(lái),sub完全包含在s[start:end]中。失敗時(shí)它返回一個(gè)-1 。start、end 和負數值的解釋和分片(slices)中的一樣。

l        rfind(s, sub [,start [,end]])——類(lèi)似于find(),不同點(diǎn)在于它查找最高索引。

l        index(s, sub [,start [,end]])——類(lèi)似于find(),不同點(diǎn)在于當字符串子集沒(méi)有被找到時(shí),引發(fā)一個(gè)ValueError。

l        rindex(s, sub [,start [,end]])——類(lèi)似于rfind(),不同點(diǎn)在于當字符串子集沒(méi)有被找到時(shí),引發(fā)一個(gè)ValueError。

l        count(s, sub [,start [,end]])——返回字符串子集sub在字符串s[start:end]中出現的次數(不重疊)。默認的start、 end 負數值的解釋和分片(slices)中的一樣。

l        lower(s)——返回一個(gè)s的副本,但是把大寫(xiě)字母轉換成小寫(xiě)字母。

l        makestrans(from, to)——返回適合傳遞給translate()的轉換表,其把每個(gè)from中的字符映射成在to中相同位置的字符。fromto必須長(cháng)度相同。

l        split(s, [,sep [,maxsplit]])——返回字符串s 中的單詞列表。如果可選擇的第二個(gè)參數sep 缺少或為None,這些單詞就用空格字符分隔(比如空格,tab,換行符,回車(chē),進(jìn)紙)。如果提供了第二個(gè)參數sep并且不為 None。它指定一個(gè)用分割單詞的字符。比起字符串中的非重疊分隔符出現的次數,返回的列表將多一個(gè)項??蛇x擇的第三個(gè)參數maxsplit 默認為0。如果它為非零,至多發(fā)生maxsplit 次的分割,并且余下的字符串作為最終的列表元素被返回(這樣列表將有至多maxsplit+1個(gè)元素)。

l        join(words [,sep])——用插入分隔符sep的方法把單詞列表或元組連接起來(lái)。sep 的默認值為一個(gè)空格符。string.join(string.split(s, sep), sep)等于s總為真。

l        lstrip(string)——返回一個(gè)最前邊沒(méi)有空格符的字符串s的副本。

l        rstrip(string)——返回一個(gè)結尾沒(méi)有空格符的字符串s的副本。

l        strip(string)——返回一個(gè)最前邊或結尾沒(méi)有空格符的字符串s的副本。

l        swapcase(s)——返回一個(gè)把小寫(xiě)字母轉換成大寫(xiě)字母的字符串s的副本,反之亦然。

l        translate(s, table [,deletechars])——s中刪除所有的deletechars (如果提供的話(huà))里的字符,然后使用table轉換這些字符,其中必須是為每個(gè)字符值和次序索引賦予轉換的256字符集字符串。

l        upper(s)——返回一個(gè)把小寫(xiě)字母轉換成大寫(xiě)字母的字符串副本。

l        ljust(string, width)——在一個(gè)給定寬度的區域中左對齊一個(gè)字符串。返回一個(gè)至少達到字符寬度要求的字符串,方式是通過(guò)把空格填充到字符串中,直到給定的寬度為止。字符串從不被刪節。

l        rjust(string, width)——在一個(gè)給定寬度的區域中右對齊一個(gè)字符串。返回一個(gè)至少達到字符寬度要求的字符串,方式是通過(guò)把空格填充到字符串中,直到給定的寬度為止。字符串從不被刪節。

l        center(string, width)——在一個(gè)給定寬度的區域中居中一個(gè)字符串。返回一個(gè)至少達到字符寬度要求的字符串,方式是通過(guò)把空格填充到字符串中,直到給定的寬度為止。字符串從不被刪節。

l        zfill(s, width)——0數字填充數字字符串的左側,直到達到指定的寬度。前邊帶有符號的字符串可以被正確處理。

l        replace(s, old, new [,maxsplit])——把字符串s中的原有的字符串子集old 替換成新的字符串子集new,返回最終的字符串副本。如果給定可選的參數maxsplit ,那么出現的第一個(gè)maxsplit 被替換。

 

屬性

l        digits——字符串0123456789 。

l        hexdigits——字符串 0123456789abcdefABCDEF 。

l        letters——所有下邊所述的小寫(xiě)字母和大寫(xiě)字母。

l        lowercase——包含所有的小寫(xiě)字母的字符串。在大多數系統上,是abcdefghijklmnopqrstuvwxyz 。

l        octdigits——字符串01234567 。

l        uppercase——包含所有的大寫(xiě)字母的字符串ABCDEFGHIJKLMNOPQRSTUVWXYZ。

l        whitespace——包含所有被認為是空格符的字符串。在大多數系統中,包括空格符、tab、換行符、回車(chē)符、進(jìn)紙和垂直tab。

 

 

 

參見(jiàn)

Python 字符串模塊 (http://www.python.org/doc/current/lib/module-string.html)

 

 

17.    tree:插入一個(gè)樹(shù)部件

tree 標記符通過(guò)查詢(xún)Zope對象顯示一個(gè)動(dòng)態(tài)的樹(shù)部件。

 

 

句法

 

tree 標記符句法:

 

<dtml-tree [VariableName|expr="VariableExpression"]>

</dtml-tree>

 

tree 標記符是一種塊標記符。它呈遞一個(gè)HTML形式的動(dòng)態(tài)樹(shù)部件。樹(shù)的根由變量或表達式給定。另外,它默認為當前的對象。通過(guò)把當前的節點(diǎn)映射成DTML名稱(chēng)空間,對每個(gè)節點(diǎn)進(jìn)行樹(shù)塊呈遞。

樹(shù)的狀態(tài)被設置在HTTP cookies中。這樣,要使用樹(shù),就必須激活cookies 。另外,每頁(yè)只顯示一個(gè)樹(shù)。

 

屬性

l        branches=string——通過(guò)調用指定的方法查找樹(shù)的分支。默認的方法是tpValues,大多數Zope對象支持它。

l        branches_expr=string——通過(guò)對表達式求值來(lái)查找樹(shù)的分支。

l        id=string——用于測定樹(shù)的狀態(tài)的方法或id的名稱(chēng)。它默認為tpId,大多數Zope對象都支持它。這個(gè)屬性只適合高級用法。

l        url=string——用于測定樹(shù)的數據項URL的方法或屬性的名稱(chēng)。它默認為tpURL,大多數Zope對象都支持它。這個(gè)屬性適合高級用法。

l        leaves=string——用來(lái)呈遞沒(méi)有子項的節點(diǎn)的DTML文檔或方法的名稱(chēng)。注意:這個(gè)文檔應該以<dtml-var standard_html_header>,以<dtml-var standard_html_footer>結束,從而確保正確的在樹(shù)中顯示

l        header=string——節點(diǎn)展開(kāi)以前被顯示DTML文檔或方法的名稱(chēng)。如果頁(yè)眉沒(méi)有被找到,它就被忽略掉。

l        footer=string——節點(diǎn)展開(kāi)以后被顯示DTML文檔或方法的名稱(chēng)。如果頁(yè)腳沒(méi)有被找到,它就被忽略掉。

l        nowrap=boolean——如果為真,那么節點(diǎn)不是被隱藏起來(lái),節點(diǎn)而是按照現有大小被縮短。

l        sort=string——按照指定的屬性對分支進(jìn)行排序。

l        reverse——顛倒分支的次序。

l        assume_children=boolean——假設節點(diǎn)有子項。如果取得和查詢(xún)子節點(diǎn)是一個(gè)費時(shí)的過(guò)程,它是有用的。在加號框內可以被下拉的結果緊挨所有的節點(diǎn)。

l        single=boolean——只允許一次展開(kāi)一個(gè)分支。當你展開(kāi)一個(gè)新的分支時(shí),任何其他的已經(jīng)展開(kāi)的分支關(guān)閉。

l        skip_unauthorized——忽略用戶(hù)不允許看到的節點(diǎn),而不是引發(fā)一個(gè)錯誤。

l        urlparam=string——被包含在展開(kāi)和縮進(jìn)部件連接里的查詢(xún)字符串。這個(gè)屬性只適用于高級用法。

 

標記符標量

 

l        tree-item-expanded——如果當前的節點(diǎn)已經(jīng)展開(kāi)則為真。

l        tree-item-url——當前節點(diǎn)的URL。

l        tree-root-url——根節點(diǎn)的URL。

l        tree-level——當前節點(diǎn)的深度。頂級節點(diǎn)的深度為0。

l        tree-colspan——正在被呈遞的樹(shù)的最大層級。當把行插入到樹(shù)表格中時(shí),這個(gè)變量可以隨同樹(shù)級變量被用來(lái)計算表格行和列跨度設置。

l        tree-state——id列表和id列表子集表示的樹(shù)的狀態(tài)。這個(gè)變量只適用于高級用法。

 

標記符控制變量

 

通過(guò)設置以下變量,你可以控制樹(shù)標記符。

l        expand_all——如果這個(gè)變量為真,那么整個(gè)樹(shù)是展開(kāi)的。

l        collapse_all——如果這個(gè)變量為真,那么整個(gè)樹(shù)是合攏的。

 

例子

 

以下顯示一個(gè)在當前對象中生成的樹(shù):

<dtml-tree>

  <dtml-var title_or_id>

</dtml-tree>

 

以下顯示一個(gè)用特定的分支方法在另外一個(gè)對象中生成的樹(shù):

<dtml-tree expr=”folder.object” branches=”objectValues”>

  Node id : <dtml-var getId>

</dtml-tree>

 

18.             try:處理例外

try標記符使你能夠用DTML處理例外,反映 Python中的try/except try/finally構造。

 

句法

 

try標記符有兩個(gè)不同的句法,try/except/else try/finally

 

try/except/else 句法:

<dtml-try>

<dtml-except [ExceptionName] [ExceptionName]...>

...

[<dtml-else>]

</dtml-try>

 

try標記符在一個(gè)塊中捕捉和處理例外??梢杂幸粋€(gè)或多個(gè)except標記符用來(lái)處理無(wú)例外或多個(gè)例外。如果一個(gè)except標記符沒(méi)有指定一個(gè)例外,那么它處理所有的例外。

當一個(gè)例外被引發(fā),立即讓第一個(gè)標記符處理這個(gè)例外。如果沒(méi)有except標記符來(lái)處理例外,那么例外以通常的方式被引發(fā)。

如果沒(méi)有例外被引發(fā),并且有一個(gè)else標記符,那么else標記符在try標記符正文以后被執行。

except else標記符是可選擇的。

 

try/finally句法

 

<dtml-try>

<dtml-finally>

</dtml-try>

 

finally標記符不能except else 標記符那樣在相同的try塊中使用。如果有一個(gè)finally標記符,它的塊不管例外在try塊內是否被引發(fā)都將被執行。

 

 

屬性

l        except——0個(gè)或多個(gè)例外名稱(chēng)。如果沒(méi)有列出例外,那么except標記符處理所有的例外。

 

標記符變量

 

except塊內部定義了這些變量:

l        error_type——例外類(lèi)型。

l        error_value——例外的值。

l        error_tb——回溯

 

例子

 

捕捉一個(gè)數學(xué)錯誤:

<dtml-try>

<dtml-var expr=“1/0”>

<dtml-except ZeroDivisionError>

You tried to divide by zero.

</dtml-try>

 

返回關(guān)于被處理的例外的信息:

<dtml-try>

<dtml-call dangerousMethod>

<dtml-except>

An error occurred.

Error type: <dtml-var error_type>

Error value: <dtml-var error_value>

</dtml-try>

 

使用finally來(lái)確保正常執行,不管是否引發(fā)一個(gè)錯誤:

<dtml-call acquireLock>

<dtml-try>

<dtml-call someMethod>

<dtml-finally>

<dtml-call releaseLock>

</dtml-try>

 

 

參見(jiàn)

raise 標記符

Python 指南: 錯誤和例外 (http://www.python.org/doc/current/tut/node10.html)

Python 內建例外 (http://www.python.org/doc/current/lib/module-exceptions.html)

 

 

19.             unless:測試一個(gè)條件

unless標記符提供了一個(gè)測試相反條件的快捷方式。對于更為完整的條件測試,請使用if標記符。

 

句法:

 

unless 標記符句法:

 

<dtml-unless ConditionVariable|expr=“ConditionExpression”>

</dtml-unless>

 

unless標記符是一種塊標記符。如果條件變量或表達式求值為假,那么就執行塊中所包含內容。就像if標記符,沒(méi)有提供變量被認為假。

 

例子:

 

測試一個(gè)變量:

<dtml-unless testMode>

  <dtml-call dangerousOperation>

</dtml-unless>

 

如果testMode不存在就執行這個(gè)塊,或者只要為假就退出。

 

參見(jiàn)

if 標記符

 

20.             var:插入一個(gè)變量

var標記符使你能夠把一個(gè)變量插入到DTML輸出中。

 

句法

 

var標記符句法:

 

<dtml-var Variable|expr=”Expression”>

 

var標記符是一種獨立標記符。var標記符通過(guò)搜索DTML名稱(chēng)空間查找一個(gè)變量,DTML名稱(chēng)空間通常包括當前對象、當前對象的容器和Web請求。如果變量被找到,就把它插入到DTML輸出中。如果它沒(méi)有被找到,Zope引發(fā)一個(gè)錯誤。

 

var標記符實(shí)體句法:

&dtml-variableName;

 

實(shí)體句法是一種插入的快捷方式并且HTML引用變量。當把變量插入到HTML標記符中時(shí)會(huì )用到它。

 

帶有屬性的var標記符實(shí)體句法:

&dtml.attribute1[.attribute2]...-variableName;

在某種程度上,你可以用實(shí)體句法指定屬性。你可以包含0個(gè)或多個(gè)用句點(diǎn)分開(kāi)的屬性。你不能使用實(shí)體句法為屬性提供參數。如果你提供0個(gè)或多個(gè)屬性,那么變量不是自動(dòng)的被HTML引用。這樣一來(lái),你可以避免使用這種句法的HTML引用,&dtml.-variableName;。

 

屬性

l        html_quote——把在HTML中具有特定含義的字符轉換成HTML字符實(shí)體。

l        missing=string——Zope不能找到變量的情況下,指定一個(gè)默認值。

l        fmt=string——格式一個(gè)變量。Zope提供一些內建的格式,包括C風(fēng)格的格式字符串。關(guān)于C風(fēng)格的格式字符串方面的信息,請見(jiàn)Python庫參考(http://www.python.org/doc/current/lib/typesseq-strings.html)。如果格式字符串不是一個(gè)內建格式,那么它被假定為一個(gè)對象方法,然后它被調用。

l        whole-dollars——按美元格式化變量。

l        dollars-and-cents——按美元和美分格式化變量。

l        collection-length——變量的長(cháng)度,假設它是一個(gè)序列。

l        structured-text——按照結構文本格式化變量。關(guān)于結構文本方面的更多信息,請見(jiàn)Zope.org Web站點(diǎn)中的Structured Text How-To (http://www.zope.org/Members/millejoh/structuredText)。

l        null=string——如果變量為None時(shí)使用的默認值。

l        lower——把大寫(xiě)字母轉換成小寫(xiě)字母。

l        upper——把小寫(xiě)字母轉換成大寫(xiě)字母。

l        capitalize——把被插入的單詞的首個(gè)字符變成大寫(xiě)。

l        spacify——把被插入的值中的下劃線(xiàn)更改成空格。

l        thousands_commas——在包含數字的值中,從小數點(diǎn)左邊開(kāi)始每隔三個(gè)數字插入逗號,例如12000 變?yōu)?/span> 12,000 。

l        url——通過(guò)調用對象的absolute_url方法插入對象的URL 。

l        url_quote——URL中具有特殊含義的字符轉換成HTML字符實(shí)體。

l        url_quote_plus——URL引用字符,例如url_quote ,但是它還把空格轉換成加號。

l        sql_quote——把單引號轉換為成對的單引號。安全的在SQL字符串中包含值時(shí)需要用到它。

l        newline_to_br——把換行符(包含回車(chē))轉換成HTML換行符。

l        size=arg——按照給定長(cháng)度截取變量注意:如果在被截取的字符串的下半部有空格,那么字符串被截取到最右邊的空格。

l        etc=arg——指定一個(gè)用來(lái)添加到被截取的字符串(通過(guò)設置前邊所述的size屬性)結尾處的字符串。默認為。

 

例子

 

在一個(gè)文檔中插入一個(gè)簡(jiǎn)單變量:

<dtml-var standard_html_header>

 

補加:

<dtml-var colors size=10 etc=“, etc.”>

 

如果colors是字符串red yellow green,生成以下輸出:

red yellow, etc.

 

C風(fēng)格字符格式:

<dtml-var expr=“23432.2323” fmt=“%.2f”>

 

呈遞為

23432.23

 

用實(shí)體句法在一個(gè)HTML A標記符內插入一個(gè)變量鏈接:

<a href=“&dtml-link;”>Link</a>

 

使用帶有屬性的實(shí)體句法給一個(gè)文檔 doc 加入一個(gè)鏈接:

<a href=“&dtml.url-doc;”><dtml-var doc fmt=”title_or_id”></a>

 

這樣就給一個(gè)對象創(chuàng )建一個(gè)使用它的URL和標題的HTML鏈接。這個(gè)例子針對URL(使用url屬性)調用對象的absolute_url 方法,針對標題調用它的title_or_id方法。

 

21.             with:控制查找DTML變量

with標記符把一個(gè)對象推進(jìn)到DTML名稱(chēng)空間。變量首先在被加入的對象中查找。

 

 

句法

 

with標記符句法:

 

<dtml-with Variable|expr=”Expression”>

</dtml-with>

with 標記符是一種塊標記符。它在with塊的持續期間內把指定的變量或變量表達式推進(jìn)到DTML名稱(chēng)空間中。這樣,首先就在被添加的對象中查找名稱(chēng)。

 

屬性

l        only——限制DTML名稱(chēng)空間,使之僅包含在with標記符中定義的名稱(chēng)空間。

l        mapping——表示變量或表達式是一個(gè)映射對象。這樣就確保在映射對象里正確查找變量。

 

例子

 

REQUEST里查找一個(gè)變量:

<dtml-with REQUEST only>

  <dtml-if id>

    <dtml-var id>

  <dtml-else>

    id’ was not in the request.

  </dtml-if>

</dtml-with>

 

first child添加到DTML名稱(chēng)空間:

<dtml-with expr=”objectValues()[0]”>

  First child‘s id: <dtml-var id>

</dtml-with>

 

參見(jiàn)

let 標記符

 

Zope中文社區
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C#深入淺出之更多數據類(lèi)型
python3 列表概念
javascript高級程序設計—— 第二章 ECMAScript基礎
javascript快速入門(mén)7
10分鐘學(xué)Python:極簡(jiǎn)Python教程
22 個(gè)有用的Python代碼片段,讓你可以像專(zhuān)業(yè)人士一樣編程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久