API参考.docx
《API参考.docx》由会员分享,可在线阅读,更多相关《API参考.docx(63页珍藏版)》请在冰豆网上搜索。
![API参考.docx](https://file1.bdocx.com/fileroot1/2023-2/6/1fc1a01f-1a6d-4c66-8bc1-a51367455a6b/1fc1a01f-1a6d-4c66-8bc1-a51367455a6b1.gif)
API参考
API参考
提供者:
Python世界:
杜文山(http:
//www.dohao.org/python)
这个文档描述了基础Zope对象集里的最常用接口。
这些参考用于编写DTML、Perl和Python脚本,而这些脚本可以创建和操纵Zope对象。
1.AuthenticatedUser类
这个接口需要由用户确认后返回的对象来提供支持,并且这个接口用于访问控制。
getUserName()
返回用户名称
●● 许可——Alwaysavailable(总是存在)
getId()
取得用户的ID。
ID可以被用来(至少在Python中)从用户的UserDatabase中得到用户。
●● 许可——Pythononly(只有Python)
getDatabasePath()
取得用户的UserDatabase中的物理路径。
通过这个方法返回的路径,可以方便的用来取得用户数据库。
●● 许可——Pythononly(只有Python)
hasRole(object,roles)
返回一个值,如果用户对于给定的对象拥有给定的角色,这个值才为真值,否则,它返回一个假值。
●● 许可——Alwaysavailable(总是存在)
getRoles()
返回用户在给定的object对象上的角色列表。
●● 许可——Alwaysavailable(总是存在)
2.DTMLDocument(ObjectManagerItem,PropertyManager)类
一个DTML文档是一个包含和执行DTML代码的Zope对象。
它用于呈现Web页面。
manage_edit(data,title)
更改DTML文档,用data替换它的内容,用title更改它的标题。
data参数可以是一个文件对象或一个字符串。
●● 许可——ChangeDTMLdocuments(更改DTML文档)
document_src()
返回DTML文档的没有被呈递的源文本。
●● 许可——Viewmanagementscreens(观看管理屏幕)
__call__(client=None,REQUEST={},RESPONSE=None,**kw)
调用一个DTML文档,从而引起文档执行其所包含的DTML代码。
这个方法返回执行的结果,其可以是任何类型的对象。
要完成它的任务,DTML文档经常需要把各种名称解析成对象。
例如,当代码<;dtml-varspam>;被执行时,DTML引擎试图解析名称spam。
要解析名称,文档必须被传递一个名称空间,在这个名称空间里查找这些名称。
这个过程可以通过以下几种方式完成:
●● 通过传递一个client对象——如果参数client被传递,那么名称作为参数的属性来查找。
●● 通过传递一个REQUEST映射——如果参数REQUEST被传递,那么名称作为参数的数据项来查找。
如果对象不是一个映射,当视图查找一个名称时引发一个TypeError错误。
●● 通过传递关键字参数——名称和它们的值可以作为文档的关键字参数来被传递。
一个DTML文档所被赋予的名称空间是这三个方法的混合物。
你可以传递任意数量的参数或者根本就不传递参数。
名称首先在关键字参数中查找,然后在client里,最后在映射里。
一个DTML文档本身可以作为一个client参数来传递它自己,除了在指定的client里查找名称,还可以在DTML文档本身里查找名称。
在一个名称空间里给一个DTML文档传递参数经常被认为是给文档提供一个关联。
DTML文档可以通过三种方式调用。
通过DTML
一个DTML文档可以通过另外一个DTML方法或文档来调用:
在这个例子里,文档aDTMLDocument是通过另外一个DTML对象采用名称的方式来被调用的。
调用方法传递的client参数值为this,REQUEST参数为当前的DTML名称空间。
前边的代码等同于以下DTML里的Python表达式中的用法:
通过Python
产品、外部方法和脚本可以采用相同的方式调用一个DTML文档,就像它们在DTML里通过一个Python表达式调用一个DTML文档那样(如前边的例子所示)。
通过出版者(BythePublisher)
当从Zope获取一个DTML文档的URL时,DTML文档通过出版者被调用。
REQUEST对象作为文档的第二个参数被传递。
●● 许可——View(观看).
get_size()
返回字节形式的未被呈递的DTML文档的源文本的大小。
●● 许可——View(观看).
ObjectManager构造器
manage_addDocument(id,title)
给当前的ObjectManager添加一个DTML文本。
3.DTMLMethod(ObjectManagerItem)类
DTML方法是一种Zope对象,它包含和执行DTML代码。
它可以作为一个模板来显示其它的对象。
它还可以存储一小段内容,这些内容可以被插入到其它的DTML文档或DTML方法里。
DTML方法的id通过document_id变量提供,title通过document_title变量提供。
manage_edit(data,title)
更改DTML方法,用data替换它的内容,更改它的title。
data参数可以是一个文件对象或一个字符串。
●● 许可——ChangeDTMLmethods(更改DTML方法)。
document_src()
返回DTML方法的未被呈递的源文本。
●● 许可——Viewmanagementscreens(观看管理屏幕).
__call__(client=None,REQUEST={},**kw)
调用一个DTML方法会引起这个方法执行它所包含的DTML代码。
这个方法返回执行的结果,结果可以是任何类型的对象。
DTML方法要完成它的任务,它需要把各种名称解析成对象。
例如,当代码<;dtml-varspam>;被执行时,DTML引擎试图解析名称spam。
要解析名称,方法必须被传递一个名称空间,在这个名称空间里查找它们。
这个过程可以通过以下用几种方式完成:
●● 通过传递一个client对象——如果传递了参数client,那么名称作为参数的属性来查找。
●● 通过传递一个REQUEST映射——如果传递了参数REQUEST,那么名称作为参数的数据项来查找。
如果对象不是一个映射,当试图查找一个名称时引发一个TypeError错误。
●● 通过传递关键字参数——名称和它们的值可以作为方法的关键字参数来传递。
一个DTML方法所被赋予的名称空间是这三个方法的混合物。
你可以传递任何数量的参数或者根本就不传递。
名称首先在关键字参数中查找,然后在client里,最后在映射里。
不像DTML文档,DTML方法不在它们自己的实例字典里查找名称。
在一个名称空间里给一个DTML方法进行传递参数经常被认为是给文档提供一个关联。
DTML方法可以通过三种方式调用:
通过DTML
一个DTML方法可以通过另外一个DTML方法或文档来调用:
在这个例子里,方法aDTMLMethod是通过另外一个DTML对象采用名称的方式来被调用的。
调用方法传递的client参数值为this,REQUEST参数为当前的DTML名称空间。
前边的代码等同于以下DTML里的Python表达式中的用法:
通过Python
产品、外部方法和脚本可以采用相同的方式调用一个DTML方法,就像它们在DTML里通过一个Python表达式调用一个DTML方法那样(如图前边的例子所示)。
通过出版者(BythePublisher)
当从Zope获取一个DTML方法的URL时,DTML方法通过出版者被调用。
REQUEST对象作为方法的第二个参数被传递。
●● 许可——View(观看)
get_size()
返回字节形式的未被呈递的DTML方法的源文本的大小。
●● 许可——View(观看)
ObjectManager构造器
manage_addDTMLMethod(id,title)
给当前的ObjectManager添加一个DTML方法。
4.DateTime类
DateTime对象提供了一种以各种格式处理日期和时间的接口。
DateTime还提供了日历操作方法、日期和时间算法和格式化方法。
DateTime对象表示时刻并且提供控制它的形式而又不影响对象绝对值的接口。
DateTime对象可以从形式多样的字符串或数字数据来创建,或者通过其它DateTime对象计算得到。
DateTime可以把时间的格式转换成许多主要的时区的格式,还可以在一个给定时区的关联里创建DateTime对象。
DateTime对象提供一部分数字行为:
●● 两个DateTime对象可以相减,从而获得两者间的时间差。
●● 一个DateTime对象和一个正的或负的数字可以相加,从而获得一个新DateTime对象,它是晚于输入的DateTime对象的某一天。
●● 一个正的或负的数字和一个DateTime对象可以相加,从而获得一个新DateTime对象,它是晚于输入的DateTime对象的某一天。
●● 一个正的或负的数字可以从一个DateTime对象中减去,从而获得一个新DateTime对象,它是早于输入的DateTime对象的某一天。
DateTime对象通过使用标准的int、long和float函数可以把从1901年1月1日以来的时间转换成整数、长整数和浮点数形式的天数。
(兼容性注意:
int、long和float返回自从1901年以来的GMT天数,而不是按照本地时区计算的天数)。
DateTime对象还可以访问以浮点数格式表示的值,它可以和Python的time模块一起使用,前提是对象的值属于这个基于新纪元的time模块的时间值的范围之内。
一个DateTime对象应该认为是不变的——所有转换和数字操作返回一个新的DateTime对象而不是修改当前的对象。
一个DateTime对象总是按照UTC时间提供值,这表现在时区关联里的那些用来创建对象的参数。
DateTime对象的方法返回基于时区关联的值。
注意如果没有指定时区,就在所有情况中使用本地时区来表示时间。
创建DateTime对象可以带有0到7个参数。
●● 如果采用不带参数的方式调用函数,那么返回当前的日期或时间并且按照本地时区表示。
●● 如果采用带有一个字符串参数的方式调用函数,其中这个字符串代表时区名称,那么返回表示当前时间的对象并且按照指定的时区表示。
●● 如果采用带有唯一的字符串参数的方式调用函数,其中字符串表示一个有效的date/time,那么就返回一个表示那个date/time的对象。
作为一个普遍的惯例,任何北美居民可以明确识别的date/time形式都是可接受的。
(其中的原因是:
在北美,像2/1/1994这样的日期被认为是February1,1994,然而在世界上的一些地方,它被认为是January2,1994。
)一个date/time对象包含两个组件:
一个日期组件和一个可选的时间组件,由一个或多个空格分隔。
如果时间组件被忽略,则假定为12:
00am。
时区名称可以作为date/time字符串最后一个元素被指定,任何可以被识别的时区名称被用于计算date/time值。
(如果你用字符串Mar9,19971:
45pmUS/Pacific创建一个DateTime对象,它的值在本质上等同于你在一台属于那个时区的机器上在指定的日期和时间time.time()所捕捉的时间):
e=DateTime("US/Eastern”)
#返回当前的date/time对象,以US/Eastern时区表示。
x=DateTime(“1997/3/91:
45pm”)
#返回指定的时间,以本地时区表示。
y=DateTime("Mar9,199713:
45:
00”)
#y等于x
date组件由年、月和日的值组成。
年的值必须为1位、2位或4位数的整数。
如果使用1位或2位数,年被假设属于20世纪。
月可以是一个整数,从1到12,也可以是月的名称或月的缩写,其中一个句点可以选择性的跟随在缩写后。
日必须属于从1到该月的天数之间的整数。
年、月和日的值可以用句点、连字号、右箭号或空格分隔。
在分隔符周围允许使用额外的空格。
年、月和日的值可以按照任何顺序给定,只要能够区分出组件。
如果所有这三个组件都是小于13的数字,那么假定的顺序为月-日-年。
time组件由小时、分钟和秒的值组成,用冒号分隔。
小时的值必须是一个0至23(包含0和23)之间的整数,分钟的值必须为0至59(包含0和59)之间的整数。
秒的值可以为0至59.999(包含0和59.999)之间的整数。
秒的值,或者分钟和秒的值,可以被忽略。
时间可以跟随大写或小写格式的am或pm,其被假定为12小时制。
●● 如果DateTime函数被调用时带有一个数字参数,这个数字被假定为浮点数值,例如由time.time()返回的值。
返回的DateTime对象显示了用本地时区表示的time.time()的gmt值的浮点数。
●● 如果函数调用时带有两个数字参数,那么第一个被认为是一个整数年,第二个参数被认为是在本地时区关联中本年开始以来的天数偏移量。
返回的date/time值是用本地时区表示的给定年份开始以来的天数的给定偏移量。
偏移量可以是正数或负数。
两位数的年被假定为20世纪当中的年份。
●● 如果函数调用时带有两个参数——第一个以浮点数形式提供的参数表示了在GMT里新纪元以来的秒数,就像那些由time.time()返回的数字,第二个以字符串形式提供的参数指定一个可识别的时区。
返回具有GMT时间值的DateTime对象并按照给定时区形式表示。
importtime
t=time.time()
now_east=DateTime(t,’US/Eastern’)
#时间按照US/Eastern时区表示
now_west=DateTime(t,’US/Pacific’)
#时间按照US/Pacific时区表示
#now_east==now_west
#只是它们的表示法是不同的
●● 如果函数调用时带有三个或更多的数字参数,那么第一个被认为是整数年,第二个被认为是整数月,第三个被认为是整数天。
如果结合在一起的值无效,那么引发一个DateTimeError。
两位数的年被认为是20世纪中的年份。
第4、5、6个参数分别指定小时、分钟和秒——小时和分钟应该为正整数,秒应该为一个正的浮点数——所有这些如果没有给定则默认为0。
可以给定一个可选择的字符串,从而作为最后一个参数来表示时区(这个效果就好像是你已经在一台位于指定时区中的机器上选定了time.time()的值。
)
如果传递给DateTime构造器的字符串参数不能被解析,它引发一个DateTime.SyntaxError错误。
无效的日期、时间或时区组件引发一个DateTime.DateTimeError错误。
模块函数Timezones()返回一个DateTime模块可识别的时区列表。
时区名称识别是不区分大小写的。
strftime(format)
返回按照format格式提供的date/time字符串。
见Python中的time.strftime(http:
//www.python.org/doc/current/lib/module-time.html)函数。
dow()
返回整数型的星期的天数,星期日是0。
●● 许可——Alwaysavailable(总是存在)
aCommon()
●● 许可——Alwaysavailable(总是存在)
h_12()
返回12小时制的小时数。
●● 许可——Alwaysavailable(总是存在)
Mon_()
兼容性:
见pMonth。
●● 许可——Alwaysavailable(总是存在)
HTML4()
按照符合HTML4.0规范的格式返回对象,这个规范是ISO8601标准之一。
有关更多的信息,请见HTML4.0规范(http:
//www.w3.org/TR/NOTE-datetime)。
日期输出格式为:
YYYY-MM-DDTHH:
MM:
SSZ,其中T和Z是文本字符。
时间为UTC(通用协调时间)时间。
●● 许可——Alwaysavailable(总是存在)
greaterThanEqualTo(t)
和其它DateTime对象或浮点数比较DateTime对象,比如由Python的time模块返回的数值。
如果对象表示一个大于或等于指定的DateTime或time模块风格的时间的date/time对象,则返回真。
通过比较长整数型的毫秒,它可以给出更为精确的结果。
●● 许可——Alwaysavailable(总是存在)
dayOfYear()
返回按照对象所在时区表示的年的天数。
●● 许可——Alwaysavailable(总是存在)
lessThan(t)
与其它的DateTime对象或一个浮点数比较DateTime对象,比如由Pythontime模块返回的数字。
如果对象表示一个小于指定的DateTime或time模块风格的时间的date/time对象,则返回真。
通过比较长整数型毫秒,它可以给出更为精确的结果。
●● 许可——Alwaysavailable(总是存在)
AMPM()
返回一个对象的最接近秒的时间字符串。
●● 许可——Alwaysavailable(总是存在)
isCurrentHour()
如果这个对象在所在时区中表示一个属于当前小时范围里的date/time对象,则返回真。
●● 许可——Alwaysavailable(总是存在)
Month()
返回完整的月份的名称。
●● 许可——Alwaysavailable(总是存在)
mm()
以两位数字符形式返回月份。
●● 许可——Alwaysavailable(总是存在)
ampm()
返回适当的时间修饰语(am或pm)。
●● 许可——Alwaysavailable(总是存在)
hour()
返回以24小时制表示的小时。
●● 许可——Alwaysavailable(总是存在)
aCommonZ()
返回以Mar1,19971:
45pmUS/Eastern格式表示的对象值的字符串。
.
●● 许可——Alwaysavailable(总是存在)
Day_()
兼容性:
见pDay。
●● 许可——Alwaysavailable(总是存在)
pCommon()
返回以Mar.1,19971:
45pm格式表示的对象值的字符串。
●● 许可——Alwaysavailable(总是存在)
minute()
返回分钟。
●● 许可——Alwaysavailable(总是存在)
day()
返回以整数表示的天。
●● 许可——Alwaysavailable(总是存在)
earliestTime()
返回一个新的表示最早可能时间(全部按秒计算)的DateTime对象,它仍然属于对象所在时区中的当前天里边。
●● 许可——Alwaysavailable(总是存在)
Date()
返回对象的日期字符串。
●● 许可——Alwaysavailable(总是存在)
Time()
返回对象的最接近秒的时间字符串。
●● 许可——Alwaysavailable(总是存在)
isFuture()
如果这个对象表示一个晚于调用时间的date/time对象,则返回真。
●● 许可——Alwaysavailable(总是存在)
greaterThan(t)
和其它的DateTime对象或一个浮点数比较DateTime对象,比如由Pythontime模块返回的数字。
如果对象表示一个大于指定的DateTime或符合time模块风格的时间的date/time对象,则返回真。
通过比较长整数型毫秒,它可以给出更为精确的结果。
●● 许可——Alwaysavailable(总是存在)
TimeMinutes()
返回对象的时间字符串,不显示秒。
●● 许可——Alwaysavailable(总是存在)
yy()
返回以两位数字符表示的日历年。
●● 许可——Alwaysavailable(总是存在)
isCurrentDay()
如果对象在所在时区中表示一个属于当前天范围内的date/time对象,则返回真。
●● 许可——Alwaysavailable(总是存在)