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

zope3 速成指引

Document Actions

Note: This is the print view with all the tutorial pages on one page. The paginated version is available here, if you prefer that.

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

准备工作

下载、安装、运行,进入ZMI

簡介

這速成材料假設讀者已熟習Python, Subversion, 以及一般網站知識 (HTML, servers, 等).

下載 Zope 3

這速成是使用 Zope pre-3.2 版本. 新的版本應該沒問題. 留意你需要 Python 2.4 及 Subversion 以取得 Zope 3 主幹版本.

要得到 Zope 的版本, 你可以使用這教材並跟隨指示 (如在視窗環境中, 用 "" 符號代替檔案名中的 "/" 符號):

mkdir zope3_quick_start
cd zope3_quick_start
svn checkout svn://svn.zope.org/repos/main/Zope3/trunk zope3

安裝

Linux

執行以下命令 (注意尾隨點號是命令的一部份):

cd zope3
python setup.py build_ext -i install_data --install-dir .
cd ..

視窗

如果你已安裝適當的編譯器, 你可以在 Linux 使用以上命令

否則, 執行這些命令(注意尾隨點號是命令的一部份):

cd zope3
python setup.py install_data --install-dir .
cd ..

然後下載 Tim Peter 的視窗 binaries 給 Zope 3 C 編碼code 及 跟隨網頁指示安裝 (確保你已得到 Python 2.4 版本): http://www.zope.org/Members/tim_one/

製造事件 (Make an instance)

Zope 3 使用事件 (instances) 來記錄伺服器(或 一組伺服器)的相關資訊 . 我們現在建設一個事件來應用:

python zope3/bin/mkzopeinstance

你將會透過這工具軟件完成以下對答:

Please choose a directory in which you'd like to install Zope
'instance home' files such as database files, configuration files,
etc.

Directory: instance

Please choose a username for the initial administrator account.
This is required to allow Zope's management interface to be used.

Username: admin

Please provide a password for the initial administrator account.

Password:
Verify password:

當你建成事件後, 修改後轉換至事件文件夾以及執行:

bin/runzope

你應該看到和以下相似的:

------
2005-09-28T20:40:11 INFO PublisherHTTPServer zope.server.http (HTTP)
started.
Hostname: my-computer
Port: 8080
------
2005-09-28T20:40:11 INFO PublisherFTPServer zope.server.ftp started.
Hostname: my-computer
Port: 8021
------
2005-09-28T20:40:11 INFO root Startup time: 5.538 sec real, 3.120 sec CPU

ZMI

如果你打開瀏覽器並連結至 http://localhost:8080 你將看到 ZMI (Zope 管理介面).

繼續並按 "Login" 右上角的連結. 輸入你在建立事件時設定的用戶名稱 以及密碼. 現在在按下右方 "Navigation" 之下的 [top] . 試試新增一些內容物件( Zope 3 事件名字在 ZMI 中是可見的). 留意新增"文件夾"(一個可以裝起其他內容物件的特別的內容物件) 後, 內容物件怎樣列成其結構.

ZMI 沒有什麼花巧, 這只是一個預設的 Zope 3 面柀(skin). 你可以修改你喜歡的, 或整個代替.

當你瀏覽 ZMI 完畢後, 返回視窗環境, 在那裏鍵入 "runzope" 及留意你每個瀏覽器的 request 也會在發生後顯示. 按下 Control-C 停止 Zope.

Hello World

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

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").


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: