1、API参考提供者:Python 世界:杜文山 (http:/www.dohao.org/python)这个文档描述了基础 Zope 对象集里的最常用接口。这些参考用于编写 DTML、Perl和 Python 脚本,而这些脚本可以创建和操纵 Zope 对象。AuthenticatedUser 类这个接口需要由用户确认后返回的对象来提供支持,并且这个接口用于访问控制。getUserName()返回用户名称 许可 Always available(总是存在)getId()取得用户的 ID。ID 可以被用来(至少在 Python 中)从用户的 UserDatabase 中得到用户。 许可 Python
2、 only(只有 Python)getDatabasePath()取得用户的 UserDatabase 中的物理路径。通过这个方法返回的路径,可以方便的用来取得用户数据库。 许可 Python only(只有 Python)hasRole(object, roles)返回一个值,如果用户对于给定的对象拥有给定的角色,这个值才为真值,否则,它返回一个假值。 许可 Always available(总是存在)getRoles()返回用户在给定的 object 对象上的角色列表。 许可 Always available(总是存在)DTMLDocument(ObjectManagerItem, Pro
3、pertyManager) 类一个 DTML 文档是一个包含和执行 DTML 代码的 Zope 对象。它用于呈现 Web 页面。manage_edit(data, title)更改 DTML 文档,用 data 替换它的内容,用 title 更改它的标题。data 参数可以是一个文件对象或一个字符串。 许可 Change DTML documents(更改 DTML 文档)document_src()返回 DTML 文档的没有被呈递的源文本。 许可 View management screens(观看管理屏幕) _call_(client=None, REQUEST=, RESPONSE=No
4、ne, *kw)调用一个 DTML 文档,从而引起文档执行其所包含的 DTML 代码。这个方法返回执行的结果,其可以是任何类型的对象。要完成它的任务,DTML 文档经常需要把各种名称解析成对象。例如,当代码;被执行时,DTML 引擎试图解析名称 spam。要解析名称,文档必须被传递一个名称空间,在这个名称空间里查找这些名称。这个过程可以通过以下几种方式完成: 通过传递一个 client 对象如果参数 client 被传递,那么名称作为参数的属性来查找。 通过传递一个 REQUEST 映射如果参数 REQUEST 被传递,那么名称作为参数的数据项来查找。如果对象不是一个映射,当视图查找一个名称时
5、引发一个 TypeError 错误。 通过传递关键字参数名称和它们的值可以作为文档的关键字参数来被传递。一个 DTML 文档所被赋予的名称空间是这三个方法的混合物。你可以传递任意数量的参数或者根本就不传递参数。名称首先在关键字参数中查找,然后在 client 里,最后在映射里。一个 DTML 文档本身可以作为一个 client 参数来传递它自己,除了在指定的 client 里查找名称,还可以在 DTML 文档本身里查找名称。在一个名称空间里给一个 DTML 文档传递参数经常被认为是给文档提供一个关联。DTML 文档可以通过三种方式调用。通过 DTML一个 DTML 文档可以通过另外一个 DTM
6、L 方法或文档来调用:在这个例子里,文档 aDTMLDocument 是通过另外一个 DTML 对象采用名称的方式来被调用的。调用方法传递的 client 参数值为 this,REQUEST 参数为当前的 DTML 名称空间。前边的代码等同于以下 DTML 里的 Python 表达式中的用法:通过 Python产品、外部方法和脚本可以采用相同的方式调用一个 DTML 文档,就像它们在 DTML里通过一个 Python 表达式调用一个 DTML 文档那样(如前边的例子所示) 。通过出版者(By the Publisher)当从 Zope 获取一个 DTML 文档的 URL 时,DTML 文档通过
7、出版者被调用。REQUEST 对象作为文档的第二个参数被传递。 许可 View(观看). get_size()返回字节形式的未被呈递的 DTML 文档的源文本的大小。 许可 View(观看).ObjectManager 构造器manage_addDocument(id, title)给当前的 ObjectManager 添加一个 DTML 文本。DTMLMethod(ObjectManagerItem) 类DTML 方法是一种 Zope 对象,它包含和执行 DTML 代码。它可以作为一个模板来显示其它的对象。它还可以存储一小段内容,这些内容可以被插入到其它的 DTML 文档或DTML 方法里。
8、DTML 方法的 id 通过 document_id 变量提供,title 通过 document_title 变量提供。manage_edit(data, title)更改 DTML 方法,用 data 替换它的内容,更改它的 title。data 参数可以是一个文件对象或一个字符串。 许可 Change DTML methods(更改 DTML 方法) 。document_src()返回 DTML 方法的未被呈递的源文本。 许可 View management screens(观看管理屏幕)._call_(client=None, REQUEST=, *kw)调用一个 DTML 方法会引起
9、这个方法执行它所包含的 DTML 代码。这个方法返回执行的结果,结果可以是任何类型的对象。DTML 方法要完成它的任务,它需要把各种名称解析成对象。例如,当代码;被执行时,DTML 引擎试图解析名称 spam。要解析名称,方法必须被传递一个名称空间,在这个名称空间里查找它们。这个过程可以通过以下用几种方式完成: 通过传递一个 client 对象如果传递了参数 client,那么名称作为参数的属性来查找。 通过传递一个 REQUEST 映射如果传递了参数 REQUEST,那么名称作为参数的数据项来查找。如果对象不是一个映射,当试图查找一个名称时引发一个 TypeError 错误。 通过传递关键字
10、参数名称和它们的值可以作为方法的关键字参数来传递。一个 DTML 方法所被赋予的名称空间是这三个方法的混合物。你可以传递任何数量的参数或者根本就不传递。名称首先在关键字参数中查找,然后在 client 里,最后在映射里。不像 DTML 文档,DTML 方法不在它们自己的实例字典里查找名称。在一个名称空间里给一个 DTML 方法进行传递参数经常被认为是给文档提供一个关联。DTML 方法可以通过三种方式调用:通过 DTML一个 DTML 方法可以通过另外一个 DTML 方法或文档来调用:在这个例子里,方法 aDTMLMethod 是通过另外一个 DTML 对象采用名称的方式来被调用的。调用方法传递
11、的 client 参数值为 this,REQUEST 参数为当前的 DTML 名称空间。前边的代码等同于以下 DTML 里的 Python 表达式中的用法:通过 Python产品、外部方法和脚本可以采用相同的方式调用一个 DTML 方法,就像它们在 DTML里通过一个 Python 表达式调用一个 DTML 方法那样(如图前边的例子所示) 。通过出版者(By the Publisher)当从 Zope 获取一个 DTML 方法的 URL 时,DTML 方法通过出版者被调用。REQUEST 对象作为方法的第二个参数被传递。 许可 View(观看)get_size()返回字节形式的未被呈递的 DT
12、ML 方法的源文本的大小。 许可 View(观看)ObjectManager 构造器manage_addDTMLMethod(id, title)给当前的 ObjectManager 添加一个 DTML 方法。DateTime 类DateTime 对象提供了一种以各种格式处理日期和时间的接口。DateTime 还提供了日历操作方法、日期和时间算法和格式化方法。DateTime 对象表示时刻并且提供控制它的形式而又不影响对象绝对值的接口。DateTime 对象可以从形式多样的字符串或数字数据来创建,或者通过其它 DateTime对象计算得到。DateTime 可以把时间的格式转换成许多主要的时区
13、的格式,还可以在一个给定时区的关联里创建 DateTime 对象。DateTime 对象提供一部分数字行为: 两个 DateTime 对象可以相减,从而获得两者间的时间差。 一个 DateTime 对象和一个正的或负的数字可以相加,从而获得一个新DateTime 对象,它是晚于输入的 DateTime 对象的某一天。 一个正的或负的数字和一个 DateTime 对象可以相加,从而获得一个新DateTime 对象,它是晚于输入的 DateTime 对象的某一天。 一个正的或负的数字可以从一个 DateTime 对象中减去,从而获得一个新DateTime 对象,它是早于输入的 DateTime 对
14、象的某一天。DateTime 对象通过使用标准的 int、 long 和 float 函数可以把从 1901 年 1 月 1 日以来的时间转换成整数、长整数和浮点数形式的天数。 (兼容性注意:int 、 long 和 float 返回自从 1901 年以来的 GMT 天数,而不是按照本地时区计算的天数) 。DateTime 对象还可以访问以浮点数格式表示的值,它可以和 Python 的 time 模块一起使用,前提是对象的值属于这个基于新纪元的 time 模块的时间值的范围之内。一个 DateTime 对象应该认为是不变的所有转换和数字操作返回一个新的DateTime 对象而不是修改当前的对象
15、。一个 DateTime 对象总是按照 UTC 时间提供值,这表现在时区关联里的那些用来创建对象的参数。DateTime 对象的方法返回基于时区关联的值。注意如果没有指定时区,就在所有情况中使用本地时区来表示时间。创建 DateTime 对象可以带有 0 到 7 个参数。 如果采用不带参数的方式调用函数,那么返回当前的日期或时间并且按照本地时区表示。 如果采用带有一个字符串参数的方式调用函数,其中这个字符串代表时区名称,那么返回表示当前时间的对象并且按照指定的时区表示。 如果采用带有唯一的字符串参数的方式调用函数,其中字符串表示一个有效的 date/time,那么就返回一个表示那个 date/
16、time 的对象。作为一个普遍的惯例,任何北美居民可以明确识别的 date/time 形式都是可接受的。 (其中的原因是:在北美,像 2/1/1994 这样的日期被认为是 February 1, 1994,然而在世界上的一些地方,它被认为是 January 2, 1994。 )一个 date/time 对象包含两个组件:一个日期组件和一个可选的时间组件,由一个或多个空格分隔。如果时间组件被忽略,则假定为 12:00am。时区名称可以作为 date/time 字符串最后一个元素被指定,任何可以被识别的时区名称被用于计算 date/time 值。(如果你用字符串 Mar 9, 1997 1:45p
17、m US/Pacific 创建一个 DateTime 对象,它的值在本质上等同于你在一台属于那个时区的机器上在指定的日期和时间time.time()所捕捉的时间):e=DateTime(“US/Eastern”)# 返回当前的 date/time 对象, 以 US/Eastern 时区表示。x=DateTime(“1997/3/9 1:45pm”)# 返回指定的时间,以本地时区表示。y=DateTime(“Mar 9, 1997 13:45:00”)# y 等于 xdate 组件由年、月和日的值组成。年的值必须为 1 位、2 位或 4位数的整数。如果使用 1 位或 2 位数,年被假设属于 20
18、 世纪。月可以是一个整数,从 1 到 12,也可以是月的名称或月的缩写,其中一个句点可以选择性的跟随在缩写后。日必须属于从 1 到该月的天数之间的整数。年、月和日的值可以用句点、连字号、右箭号或空格分隔。在分隔符周围允许使用额外的空格。年、月和日的值可以按照任何顺序给定,只要能够区分出组件。如果所有这三个组件都是小于 13 的数字,那么假定的顺序为月-日-年。time 组件由小时、分钟和秒的值组成,用冒号分隔。小时的值必须是一个 0 至 23(包含 0 和 23)之间的整数,分钟的值必须为 0 至59(包含 0 和 59)之间的整数。秒的值可以为 0 至 59.999(包含 0 和59.999
19、)之间的整数。秒的值,或者分钟和秒的值,可以被忽略。时间可以跟随大写或小写格式的 am 或 pm,其被假定为 12 小时制。 如果 DateTime 函数被调用时带有一个数字参数,这个数字被假定为浮点数值,例如由 time.time()返回的值。返回的 DateTime 对象显示了用本地时区表示的 time.time()的 gmt 值的浮点数。 如果函数调用时带有两个数字参数,那么第一个被认为是一个整数年,第二个参数被认为是在本地时区关联中本年开始以来的天数偏移量。返回的date/time 值是用本地时区表示的给定年份开始以来的天数的给定偏移量。偏移量可以是正数或负数。两位数的年被假定为 20
20、 世纪当中的年份。 如果函数调用时带有两个参数第一个以浮点数形式提供的参数表示了在 GMT 里新纪元以来的秒数,就像那些由 time.time()返回的数字,第二个以字符串形式提供的参数指定一个可识别的时区。返回具有 GMT 时间值的DateTime 对象并按照给定时区形式表示。import time t=time.time()now_east=DateTime(t,US/Eastern)# 时间按照 US/Eastern 时区表示now_west=DateTime(t,US/Pacific)# 时间按照 US/Pacific 时区表示# now_east = now_west# 只是它们的表
21、示法是不同的 如果函数调用时带有三个或更多的数字参数,那么第一个被认为是整数年,第二个被认为是整数月,第三个被认为是整数天。如果结合在一起的值无效,那么引发一个 DateTimeError。两位数的年被认为是 20 世纪中的年份。第 4、5、6 个参数分别指定小时、分钟和秒小时和分钟应该为正整数,秒应该为一个正的浮点数所有这些如果没有给定则默认为 0。可以给定一个可选择的字符串,从而作为最后一个参数来表示时区(这个效果就好像是你已经在一台位于指定时区中的机器上选定了 time.time()的值。 )如果传递给 DateTime 构造器的字符串参数不能被解析,它引发一个DateTime.Synt
22、axError 错误。无效的日期、时间或时区组件引发一个DateTime.DateTimeError 错误。模块函数 Timezones() 返回一个 DateTime 模块可识别的时区列表。时区名称识别是不区分大小写的。strftime(format)返回按照 format 格式提供的 date/time 字符串。见 Python 中的 time.strftime (http:/www.python.org/doc/current/lib/module-time.html) 函数。dow()返回整数型的星期的天数,星期日是 0。 许可 Always available(总是存在)aCommo
23、n() 许可 Always available(总是存在)h_12()返回 12 小时制的小时数。 许可 Always available(总是存在)Mon_()兼容性:见 pMonth。 许可 Always available(总是存在)HTML4()按照符合 HTML 4.0 规范的格式返回对象,这个规范是 ISO8601 标准之一。有关更多的信息,请见 HTML 4.0 规范(http:/www.w3.org/TR/NOTE-datetime) 。日期输出格式为:YYYY-MM-DDTHH:MM:SSZ,其中 T 和 Z 是文本字符。时间为UTC(通用协调时间)时间。 许可 Always
24、 available(总是存在)greaterThanEqualTo(t)和其它 DateTime 对象或浮点数比较 DateTime 对象,比如由 Python 的 time 模块返回的数值。如果对象表示一个大于或等于指定的 DateTime 或 time 模块风格的时间的date/time 对象,则返回真。通过比较长整数型的毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)dayOfYear()返回按照对象所在时区表示的年的天数。 许可 Always available(总是存在)lessThan(t)与其它的 DateTime 对象或一个浮点数比较 Da
25、teTime 对象,比如由 Pythontime 模块返回的数字。如果对象表示一个小于指定的 DateTime 或 time 模块风格的时间的 date/time 对象,则返回真。通过比较长整数型毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)AMPM()返回一个对象的最接近秒的时间字符串。 许可 Always available(总是存在)isCurrentHour()如果这个对象在所在时区中表示一个属于当前小时范围里的 date/time 对象,则返回真。 许可 Always available(总是存在)Month()返回完整的月份的名称。 许可 Al
26、ways available(总是存在)mm()以两位数字符形式返回月份。 许可 Always available(总是存在)ampm()返回适当的时间修饰语(am 或 pm) 。 许可 Always available(总是存在)hour()返回以 24 小时制表示的小时。 许可 Always available(总是存在)aCommonZ()返回以 Mar 1, 1997 1:45 pm US/Eastern 格式表示的对象值的字符串。. 许可 Always available(总是存在)Day_()兼容性:见 pDay。 许可 Always available(总是存在)pCommon(
27、)返回以 Mar. 1, 1997 1:45 pm 格式表示的对象值的字符串。 许可 Always available(总是存在)minute()返回分钟。 许可 Always available(总是存在)day()返回以整数表示的天。 许可 Always available(总是存在)earliestTime()返回一个新的表示最早可能时间(全部按秒计算)的 DateTime 对象,它仍然属于对象所在时区中的当前天里边。 许可 Always available(总是存在)Date()返回对象的日期字符串。 许可 Always available(总是存在)Time()返回对象的最接近秒的时
28、间字符串。 许可 Always available(总是存在)isFuture()如果这个对象表示一个晚于调用时间的 date/time 对象,则返回真。 许可 Always available(总是存在)greaterThan(t)和其它的 DateTime 对象或一个浮点数比较 DateTime 对象,比如由 Pythontime 模块返回的数字。如果对象表示一个大于指定的 DateTime 或符合 time 模块风格的时间的date/time 对象,则返回真。通过比较长整数型毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)TimeMinutes()返回
29、对象的时间字符串,不显示秒。 许可 Always available(总是存在)yy()返回以两位数字符表示的日历年。 许可 Always available(总是存在)isCurrentDay()如果对象在所在时区中表示一个属于当前天范围内的 date/time 对象,则返回真。 许可 Always available(总是存在)dd()返回以两位数字符形式表示的天。 许可 Always available(总是存在)rfc822()返回以 RFC 822 格式显示的日期。 许可 Always available(总是存在)isLeapYear()如果当前年(在对象所属时区中)是闰年则返回真
30、 许可 Always available(总是存在)fCommon()返回一个以 March 1, 1997 1:45 pm 格式表示的对象值的字符串。 许可 Always available(总是存在)isPast()如果对象表示一个早于调用时间的 date/time 对象,则返回真。 许可 Always available(总是存在)fCommonZ()返回一个以 March 1, 1997 1:45 pm 格式表示的对象值的字符串。 许可 Always available(总是存在)timeTime()返回 UTC 中按照 Python time 模块所使用的格式以浮点数形式表示的 da
31、te/time 。注意,采用那些拥有对于 time 模块来说没有含义的值的 DateTime 来创建 date/time 是可能的。 许可 Always available(总是存在)toZone(z)返回当前对象在指定的 z 时区中时的 DateTime 。 许可 Always available(总是存在)lessThanEqualTo(t)和另外一个 DateTime 对象或一个浮点数比较 DateTime 对象,比如由 Python time 模块返回的数字。如果对象表示一个小于或等于指定的 DateTime 或 time 模块风格的时间的date/time,则返回真。通过比较长整数型
32、毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)Mon()兼容性:参见 aMonth。 许可 Always available(总是存在)parts()返回包含对象的日历年、月、日、小时、分钟、秒和时区值的元组。 许可 Always available(总是存在)isCurrentYear()如果这个对象在所属时区中表示一个属于当前年范围以内的 date/time 对象,则返回真。 许可 Always available(总是存在)PreciseAMPM()返回对象的时间字符串。 许可 Always available(总是存在)AMPMMinutes()返
33、回对象的时间字符串,不显示秒。 许可 Always available(总是存在)equalTo(t)和另外一个 DateTime 对象或一个浮点数比较 DateTime 对象,比如由 Python time 模块返回的数字。如果对象表示一个等于指定的 DateTime 或 time 模块风格时间的 date/time,则返回真。通过比较长整数型毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)pDay()返回星期的简短名称(带有句点) 。 许可 Always available(总是存在)notEqualTo(t)和另外一个 DateTime 对象或一个浮点
34、数比较 DateTime 对象,比如由 Python time 模块返回的数字。如果对象表示一个不等于指定的 DateTime 或 time 模块风格时间的date/time,则返回真。通过比较长整数型毫秒,它可以给出更为精确的结果。 许可 Always available(总是存在)h_24()返回 24 小时制的小时。 许可 Always available(总是存在)pCommonZ()返回以 Mar. 1, 1997 1:45 pm US/Eastern 格式表示的对象值的字符串。 许可 Always available(总是存在)isCurrentMonth()如果对象在所属的时区中
35、表示一个属于当前月范围以内的 date/time 对象,则返回真。 许可 Always available(总是存在)DayOfWeek()兼容性:参见 aDay。 许可 Always available(总是存在)latestTime()返回一个新的表示最迟可能时间(全部按秒计算)的 DateTime 对象,它仍然属于对象所在时区中的当前天范围。 许可 Always available(总是存在)dow_1()返回以整数表示的星期的天数,星期日为 1。 许可 Always available(总是存在)timezone()返回对象的所属时区。 许可 Always available(总是存在
36、)year()返回对象的日历年。 许可 Always available(总是存在)PreciseTime()返回对象的时间字符串。 许可 Always available(总是存在)ISO() 许可 Always available(总是存在)millis()返回自从 GMT 新纪元以来的毫秒数。 许可 Always available(总是存在)second()返回秒 许可 Always available(总是存在)month()返回以整数表示的对象的月份。 许可 Always available(总是存在)pMonth()返回简写(带有句点)的月份名称。 许可 Always avail
37、able(总是存在)aMonth()返回简写的月份名称。 许可 Always available(总是存在)isCurrentMinute()如果对象在所属时区中表示一个属于当前分钟范围以内的 date/time 对象,则返回真。 许可 Always available(总是存在)Day()返回星期中天的完整名称。 许可 Always available(总是存在)aDay()返回星期中天的简写名称。 许可 Always available(总是存在)ExternalMethod 类Web 可调用函数,它们封装外部 Python 函数。函数在一个外部文件里被定义。可以把这个文件看成是模块,但是
38、它不是一个模块。它不是直接被导入,而是被读入和求值。这个文件必须位于 Zope 安装目录中的 Extensions子目录里,或者在一个产品目录的 Extensions 子目录里。当前还不能导入位于 Extensions 目录中的 Python 模块,这应归于外部方法装载的方式。导入那些在 Zope 安装目录中的 lib/python 目录里发现的模块是可能的,或者是导入那些位于 lib/python 目录中的软件包里的模块。manage_edit(title, module, function, REQUEST=None)更改外部方法。见 manage_addExternalMethod 中的
39、参数模块和函数的描述。注意,调用 manage_edit 引起模块被有效地重新载入。这对于在调试期间查看更改的效果来说是有用的,但是对于那些依赖被共享的全局数据的函数来说,它会导致问题。_call_(*args, *kw)调用外部方法。调用一个外部方法大致等同于用 Python 调用原始函数。位置和关键字参数像通常那样传递。注意,它不象通常的 Python 方法那样self 参数必须明确的被传递。如果属于以下情况,根据这个原则,如果属于以下情况,会导致一个例外: 提供的参数数量少于必需的参数数量。 函数的第一个参数的名称是 self。在这种情况下,第一个参数使用对象的上级 URL。Object
40、Manager 构造器manage_addExternalMethod(id, title, module, function)给一个 ObjectManager 添加一个外部方法。除了标准的用于创建对象的参数 id 和 title外,还定义了以下的参数: functionPython 函数的名称。它可以是一个普通的 Python 函数或是一个被绑定的方法。 module包含函数的定义的文件名称。模块通常位于 Extensions 目录,然而,文件名可以拥有一个产品前缀,用以显示它可以在一个产品目录里被找到。例如,如果模块是 ACMEWidgets.foo,那么就可以试试使用文件lib/pyt
41、hon/Products/ACMEWidgets/Extensions/foo.py。如果失败了,那么就使用文件Extensions/ACMEWidgets.foo.pyFile(ObjectManagerItem, PropertyManager) 类文件是一种包含文件内容的 Zope 对象。通过 Zope,一个文件对象可以被用来上载或下载文件信息。在 Zope 里使用一个文件对象是容易的。最普通的用法是在一个 Web 页面里显示一个文件对象的内容。一个更为复杂的例子是用来给用户呈现可以下载的文件对象。为了让用户能够下载文件,下一个例子显示了一个文件夹里的每个文件对象的链接:”在这个例子里,
42、absolute_url 方法和 id 被用来创建当前 ObjectManager 中的所有文件对象的 HTML 超级链接列表。参见 ObjectManager 的 objectValues 方法的细节。getSize()返回字节形式的文件大小。 许可 View(观看)update_data(data, content_type=None, size=None)用 data 更新文件的内容。data 参数必须为一个字符串。如果 content_type 没有提供,那么就不设置内容类型。如果没有提供 size,那么文件的大小就从 data 中计算。 许可 Python only(只有 Pytho
43、n)getContentType()返回文件的内容类型。 许可 View(观看)ObjectManager 构造器manage_addFile(id, file=“, title=“, precondition=“, content_type=“)添加一个新文件对象。采用 file 文件内容创建一个新文件对象 id。Folder(ObjectManagerItem, ObjectManager, PropertyManager) 类文件夹是 Zope 中的一种通用容器对象。文件夹是 Zope 里最常见的 ObjectManager 子类。ObjectManage 构造器manage_addFo
44、lder(id, title)给当前的 ObjectManager 添加一个文件夹。 许可 Add FoldersImage(File) 类Image 是一种包含图像内容的 Zope 对象。通过 Zope,一个 Image 对象可以被用来上载或下载图像信息。图像对象有两个定义大小的属性,height 和 width 。图像被上载的时,计算出这两个属性。对于 Zope 不能识别的图像类型,这些属性可能不被定义。在 Zope 里使用一个 Image 对象是容易的。最普通的用法是在一个 Web 页面里显示一个 Image 对象的内容。通过 DTML 引用这个对象就可以实现:它生成一个 HTML IM
45、G 标记符,引用图像的 URL。它等同于:”你可以使用标记符方法更为精确的控制图像的显示方式。例如:tag(height=None, width=None, alt=None, scale=0, xscale=0, yscale=0, *args)这个方法返回一个包含 HTML IMG 标记符的字符串,它引用图像。根据你的需要,可以选择提供 height、width 、alt、scale、xscale 和 yscale 参数,这些参数转换成 HTML IMG 标记符的属性。注意,默认提供 height 和 width,并且 alt 取自title_or_id 方法。可以通过提供关键字参数来支持
46、其它的或未来的 IMG 标记符属性。例外情况是 HTML 风格样式单标记符 class。因为单词 class 是 Python 中的保留字,你必须代之以使用关键字参数 css_class。这样就在处理 img 标记符时转换成一个 class HTML 标记符。 许可 View(观看).ObjectManager 构造器manage_addImage(id, file, title=“, precondition=“, content_type=“)添加一个新 Image 对象。用 file 文件内容创建一个新 Image 对象 id。MailHost 类MailHost(邮件主机)对象用作简单
47、邮件传输协议 (SMTP)服务器的适配器。MailHost被用来通过 DTML sendmail 标记符查找适合发送邮件的主机。send(messageText, mto=None, mfrom=None, subject=None, encode=None)发送一个电子邮件消息,参数为: messageText邮件消息的正文。 mto消息接受者字符串或列表。 mfrom消息发送者的地址。 subject消息的主题。 encoderfc822 定义的消息编码。默认为 None,则意味着没有进行编码。有效的值为 base64、 quoted-printable 和 uuencode 。ObjectManager 构造器manage_a