Personal tools
You are here: Home Zope Tutorials zope3 速成指引 Hello World

Hello World

Document Actions
編寫一個簡單的 "Hello World" 程式

panjy

本文由Arthur Ccube翻译,未完。 http://www.benjiyork.com/quick_start.txt
Page 2 of 2.

Hello World

我們將編寫一個簡單的 "Hello World" 程式.

我們的第一個內容物件

我們需要打開在 lib/python 目錄的事件及建立一個叫 "hello" 的目錄及在目錄中建立 "hello.py".

在這檔案內, 鍵入這些文字:

import persistent

class HelloWorld(persistent.Persistent):
    greeting = 'Hello'
    subject = 'world'

這個不同於一個 "普通"的 Python 類(class), 這個從 persistent.Persistent 衍生而成. 那 "Persistent" 基本類別將留意任何在事件發生的改變 以為確保它們會抄寫至 object database (ZODB). 你應要知曉幾個關於 persistence 的東西, 但我們將遲些再參考.

我們還需要一個空白的文件名字為 __init__.py, 將它放在 "hello" 目錄 以便 Python 把它認作包裝 (package).

登記內容類別(Content Type)

我們需要讓 Zope 3 知道我們希望在 ZMI 的"新增 餐單" 看見新的內容類別. 我們需要在 "hello" 目錄新增一個 "configure.zcml" 檔 及在那裏放一個 "browser:addMenuItem" 指令.

ZCML (Zope Configuration Markup Language) 是一個 XML 語言用來設定 Zope 組件. 任何指定的ZCML 可以用給合適的 Python 碼替代, 但 ZCML 通常比較簡潔, 易作成, 及可維護.

第一個在檔案出現的是 "configure" 標簽(tag). 所有 ZCML 檔用 "configure" 標簽開始, 其中包含其他標簽. Zope 使用 XML 名稱集 (namespaces) (那個 "xmlns" 屬性) 以分辨每個標簽的內容. 最基本的標簽是在 http://namespaces.zope.org/zope namespace. 其他我們將在這裏用的名稱集是瀏覽器主導 (browser-specific) 指令. 那 "configure" 標簽還包含那 (隨意的, 但極度建議) "i18n_domain" 指令用來形容國際化區域其 應用在這 ZCML 檔案中可閱讀(human-readable) 的文字 (像下面的 "title" ).

因此我們的 "configure.zcml" 檔會像這樣:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
    i18n_domain="hello"
    >

   <browser:addMenuItem
       class=".hello.HelloWorld"
       title="QS Hello World"
       permission="zope.ManageContent"
       />

</configure>

那 "class" 屬性指明給類使用的模組路徑, 一個起始點號 代表導入相對於這 ZCML 檔的包裝. 因此這裏 Zope 將導入 hello 模組, 然後由那模組導入 "HelloWorld".

那 "title" 屬性提供新增餐單的顯示標題 (我們用"QS" 前綴那標題 因為 Zope 連載另一個 "hello world" 物件, 所以這確保使用正確的 那一個).

那個 "permission" 屬性用來形容一個用者新增一個物件的所需權限. 那 "zope.ManageContent" 權限代表用者可以新增、移除及修改內容 (那個你在新增事件是的 "admin" 用者就是一個這樣的用者).

我們需要告訴 Zope 閱讀我們的 ZCML 檔, 以及最方便的方法是 放一個 "插條" (slug) 至 instance/etc/package-includes 目錄. "插條" 是一個 ZCML 檔案, 其中只包括另一檔案. 這裡就是我們的插條應該有的 樣貌 (另存為 hello-configure.zcml):

<include package="hello" />

現在我們開始 Zope 備份, 我們可以移至 ZMI 然後新增我們的內容類別, 按下 "QS Hello World" 並輸入給物件的名稱; 取名為 "hello". 如果我們在新增後按下我們的物件, 我們只能看見一個通用的 檢視, 告訴我們物件的類 ("hello.hello.HelloWorld").

by 潘俊勇 last modified 2005-10-15 01:48
Contributors: Arthur Ccube

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: