Zope发布者可以将Python对象发布到网络上。
项目描述
zope.publisher
此软件包允许您在网络上发布Python对象。它支持纯HTTP/WebDAV客户端、网络浏览器以及XML-RPC和FTP客户端。输入和输出流由请求和响应对象表示,这使得从Python中进行客户端交互变得简单。发布者的行为旨在与WSGI兼容。
变更
7.1 (2024-09-27)
7.0 (2023-08-29)
删除对Python 2.7、3.5、3.6的支持。
删除对im_func和func_code的支持。
添加对Python 3.11的支持。
6.1.0 (2022-03-15)
改进BrowserRequest中查询字符串和表单解码的处理。
之前的方法是将底层库设置为使用 ISO-8859-1 解码输入,然后重新编码为 ISO-8859-1 并使用从 Accept-Charset 请求头推断出的编码进行解码。然而,这种方法在概念上并不合理(因为 Accept-Charset 定义了首选的 响应 编码),并且使得处理请求中指定为非 ISO-8859-1 编码的情况(例如在 multipart/form-data 输入中按项指定)变得不可能。
现在我们只为查询字符串执行可疑的 Accept-Charset 猜测;在其他情况下,我们让 multipart 决定编码,默认为 HTML 规范中的 UTF-8。对于需要指定其他默认表单编码的应用程序,BrowserRequest 子类现在可以设置 default_form_charset。
参见 问题 65。
添加对 Python 3.10 的支持。
6.0.2 (2021-06-07)
避免在 zope.publisher.publish.publish 中出现跟踪回溯引用循环。
优雅地处理空的 Content-Type 环境变量。
6.0.1 (2021-04-15)
修复与 zope.interface 5.4 的测试兼容性问题。
6.0.0 (2021-01-20)
将表单数据解析迁移到 multipart,这是一个新的依赖项。参见 问题 39。注意,因此 FileUpload 对象不再有 name 属性:在任何情况下,name 属性都不能在可移植代码中使用,应使用打开文件的常规方法。
添加对 Python 3.9 的支持。
5.2.1 (2020-06-15)
修复 Python 3 中一些响应边缘情况上的文本/字节处理。参见 拉取请求 51。
5.2.0 (2020-03-30)
添加对 Python 3.8 的支持。
确保所有对象都有一个一致的接口解析顺序。参见 问题 49。
取消对过时的 python setup.py test 命令的支持。
5.1.1 (2019-08-08)
避免使用已在 Python 3.8 中弃用的 urllib.parse.splitport()。参见 问题 38
5.1.0 (2019-07-12)
5.0.1 (2018-10-19)
修复 DeprecationWarning。
5.0.0 (2018-10-10)
向后不兼容的更改:删除 zope.publisher.tests.httprequest。它在此包内未使用,并且从未移植到 Python 3。修复 https://github.com/zopefoundation/zope.publisher/issues/4。
添加对 Python 3.7 和 PyPy3 的支持。
取消对 Python 3.3 的支持。
修复 XMLRPCResponse 有一个字符串体(而不是字节体),这可能导致 Python 3 中的 TypeError。参见 问题 26。
4.3.2 (2017-05-23)
通过定义 __bool__ 修复 BaseRequest 实例(包括 BrowserRequest)意外地为 False 的问题。这些实例在 Python 2 中始终为 True。参见 问题 18。
4.3.1 (2017-04-24)
添加对 Python 3.6 的支持。
在 zope.publisher.publisher.unwrapMethod 中接受 __code__ 的新旧位置。这恢复了与 Products.PythonScripts 的兼容性,其中参数没有被提取。[maurits, thet, MatthewWilkes]
修复了在 Python 3.4 及以上版本上的文件上传问题。cgi.FieldStorage 在垃圾回收时显式关闭文件。有关详细信息,请参阅
我们现在在完成请求处理之前保持对 FieldStorage 的引用。
修复了在 Python 3 上的 POST 请求,其值较大。这与 cgi.FieldStorage 在 Python 3 中进行解码有关。请参阅 pull 16。
4.3.0 (2016-07-04)
添加了对 Python 3.5 的支持。
取消对 Python 2.6 和 3.2 的支持。
4.2.2 (2015-11-16)
以确定性的顺序发出 HTTP 响应头(GH #8)。
4.2.1 (2015-06-05)
添加了对 Python 3.2 的支持。
4.2.0 (2015-06-02)
添加了对 PyPy 和 PyPy3 的支持。
4.1.0 (2014-12-27)
添加了对 Python 3.4 的支持。
4.0.0 (2014-12-22)
将 __traceback_info__ 添加到 response.redirect() 中,以简化不可信重定向的调试。
为 Redirect 异常添加 trusted 支持。
4.0.0a4 (2013-03-12)
支持返回 UTF-8 编码的 Unicode 应用/json 响应。
4.0.0a3 (2013-02-28)
从 PrincipalLogging.getLogMessage 返回字节而不是 unicode。
4.0.0a2 (2013-02-22)
在 zope.publisher.xmlrpc.TestRequest 中使用 BytesIO。
4.0.0a1 (2013-02-21)
用等效的 zope.component.adapter 装饰器替换已弃用的 zope.component.adapts 使用。
用等效的 zope.interface.implementer 装饰器替换已弃用的 zope.interface.implements 使用。
取消对 Python 2.4、2.5 和 pypy 的支持。
添加了对 Python 3.3 的支持。
在 try/finally 中包裹 with interaction()。
不要使用 304 响应猜测内容类型,因为根据: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5,它不应/不应当包含它。
不幸的是,如果结果在状态之前设置,内容类型仍然会被猜测。
3.13.0 (2011-11-17)
修复了当没有字符集与表单数据匹配且 HTTP_ACCEPT_CHARSET 包含一个 * 时出现的错误。
添加了测试便利助手 create_interaction 和 with interaction()。
3.12.6 (2010-12-17)
将非 CRLF 版本上传到 pypi。
3.12.5 (2010-12-14)
将 tests 扩展名重命名为 test。
为我们的 configure.zcml 添加测试。
根据 W3C 规范,如果浏览器没有设置头,则使用 UTF-8 作为字符集。
3.12.4 (2010-07-15)
LP #131460:使 principal logging 对 unicode 安全。
在测试中移除了对字符串异常的使用,http://bugs.debian.org/585343
为在 zope.app.publication 中使用而添加 IStartRequestEvent 和 StartRequestEvent(与 IEndRequestEvent 和 EndRequestEvent 相匹配)。包括重构以产生一个“具有请求的事件”的定义 - IRequestEvent。
3.12.3 (2010-04-30)
LP #209440:在 publish.publish() 中处理重试时,如果 handleErrors == False,则不要掩盖原始异常。此更改使在单元测试中调试此类异常更容易。感谢 James Henstridge 提供补丁。
LP #98395:允许 Unicode 输出 MIME 类型不以 text/ 开头的 XML 内容,如 RFC 3023 以及以 +xml 结尾的内容类型,例如 Mozilla XUL 的 application/vnd+xml。感谢 Justin Ryan 提供补丁。
3.12.2 (2010-04-16)
用 stdlib 的 doctest 替换 zope.testing.doctestunit 的使用。
修复了当使用 paster.httpserver 提供服务时 xml-rpc 请求会挂起的问题。
3.12.1 (2010-02-21)
确保BaseRequest.traverse不会在安全代理包装过的已遍历元素上调用遍历钩子。
3.12.0 (2009-12-31)
撤销3.6.2中的更改,再次移除对zope.authentication的依赖。将BasicAuthAdapter和FTPAuth适配器移动到新的zope.login包。
3.11.0 (2009-12-15)
将EndRequestEvent和IEndRequestEvent从zope.app.publication移至此处。
3.10.1 (2009-11-28)
声明对zope.contenttype 3.5的最低依赖(在3.10中省略)。
3.10.0 (2009-10-22)
将zope.publisher.contenttype的实现移动到zope.contenttype.parse,保留BBB导入并移动测试。此包的新但轻量级依赖是zope.contenttype。
通过在方法为POST时将QUERY_STRING排除在request.form之外来支持Python 2.6。如果需要进一步处理,原始QUERY_STRING仍然可用。
在setDefaultSkin函数中更好地支持zcml defaultSkin指令的行为(注册接口作为默认皮肤)。
3.9.3 (2009-10-08)
修复3.9.0中引入的检查未授权重定向的问题,使其与虚拟主机一起工作。
3.9.2 (2009-10-07)
使重定向验证在没有HTTP_HOST变量的情况下也能工作。
添加DoNotReRaiseException适配器,可以将其注册为异常,以便在publish方法的handle_errors参数为False时标记它们不应由发布者重新抛出。
3.9.1 (2009-09-01)
在检查受信任的主机重定向之前,将传递给HTTPRequest重定向方法的location转换为字符串,因为location对象可能是某些可以转换为字符串的非字符串,如URLGetter。
3.9.0 (2009-08-27)
在zope.app.publisher重构期间,将zope.app.publisher的一些部分移入此包。
IModifiableUserPreferredLanguages适配器用于请求
browser:defaultView和browser:defaultSkin ZCML指令
IHTTPView、IXMLRPCView等接口
为zope.publisher的一些类引入安全ZCML声明
引入IReRaiseException接口。如果在发布过程中发生异常,并且对于此异常存在一个适配器,当调用它时返回False,则异常不会被发布者重新抛出。这仅在publish()方法的handle_errors参数设置为False时发生。修复了在启用调试器中间件的情况下作为WSGI管道操作时的问题。
有关详细信息,请参阅https://bugs.launchpad.net/grok/+bug/332061。
修复#98471:限制重定向到当前主机。这会在重定向到不同主机时引发ValueError。如果这是故意的,则可以给出参数trusted。
将zope.testing的依赖性从install_requires移动到tests_require。
在supportsRetry http请求中删除time.sleep。
添加针对上传文件时将完整文件系统路径作为文件名上传的Internet Explorer版本修复。
3.8.0 (2009-05-23)
将IHTTPException、IMethodNotAllowed和MethodNotAllowed从zope.app.http移至此处,修复涉及zope.app.http的依赖循环。
将DefaultViewName API从zope.app.publisher.browser移至此处,使其可供其他需要它的包使用。
3.7.0 (2009-05-13)
将 IView 和 IBrowserView 接口移动到 zope.browser.interfaces,保留 BBB 导入。
3.6.4 (2009-04-26)
向 setDefaultSkin 添加一些 BBB 代码,以便 IBrowserRequest 能够在未配置任何特殊适配器的情况下继续工作。
将 getDefaultSkin 移动到与 setDefaultSkin 方法相邻的 skinnable 模块中,保留 BBB 导入。在代码中将 IDefaultBrowserLayer 标记为 IBrowserSkinType,而不是依赖 ZCML 来加载。
3.6.3 (2009-03-18)
如果 zope.annotation 可用,将 HTTPRequest 标记为 IAttributeAnnotatable,这之前是由 zope.app.i18n 完成的。
在 ZCML 配置中注册 IHTTPRequest -> IUserPreferredCharsets 适配器。这之前也是由 zope.app.i18n 完成的。
3.6.2 (2009-03-14)
将 zope.security.interfaces.IPrincipal 从 zope.app.security 移动到 zope.publisher.interfaces.logginginfo.ILoggingInfo 的适配器添加。这是重构过程的一部分。
将 HTTP 和 FTP 请求的适配器添加到 zope.authentication.ILoginPassword 接口。它们作为重构过程的一部分从 zope.app.security 移动。此更改添加了对 zope.authentication 包的依赖关系,但没关系,因为这个包只是一个微小的仅定义合同定义的包。
有关原因,请参阅 http://mail.zope.org/pipermail/zope-dev/2009-March/035325.html
3.6.1 (2009-03-09)
修复:根据 setDefaultSkin 的条件从 http 实现中删除 IBrowserRequest 依赖关系。使用 ISkinnable 而不是 IBrowserRequest。
3.6.0 (2009-03-08)
清理:将与皮肤相关的代码从 zope.publisher.interfaces.browser 和 zope.publisher.browser 移动到 zope.publihser.interfaces 和 zope.publisher.skinnable,并保留 BBB 导入。有关更多信息,请参阅 skinnable.txt。
修复:确保在 setDefaultSkin 中只应用皮肤接口,同时也提供 IBrowserSkinType。这将确保在 applySkin 方法根据此类型接口查找皮肤时能够找到皮肤。
修复:使适配器可用,而不仅仅是接口作为从适配器注册表中的皮肤。目前,defaultSkin 指令将简单接口注册为皮肤适配器,如果有人尝试将此类皮肤适配器适配,将会遇到 TypeError。我们可能应该更改 defaultSkin 指令并注册真正的适配器,而不是使用接口作为虚假适配器,我们期望适配器工厂。
功能:允许使用可选的 skinType 参数(默认设置为 IBrowserSkinType)使用不同皮肤类型使用 applySkinof。
功能:在适配器中实现默认皮肤模式。这允许我们使用 IDefaultSkin 适配器为除 IBrowserRequest 之外的其他请求注册默认皮肤。
注意,ISkinnable、ISkinType 和皮肤实现应从浏览器请求模块中移出。例如,z3c.jsonrpc 这样的包不依赖于 IBrowserRequest,但它们是可皮肤的。
功能:添加 ISkinnable 接口,允许我们不仅对 IBrowserRequest 实现应用皮肤模式。
修复:不要在 Python 2.6 上产生警告。
修复:使 IBrowserPage 继承 IBrowserView。
将 IView 和 IDefaultViewName 从 zope.component.interfaces 移动到这里。停止从 zope.component 中继承已弃用的(多年)接口。
删除已弃用的代码。
清理:根据Zope框架策略,将zope.testing从附加组件移至依赖项。移除依赖项中的zope.app.testing:没有它测试也能正常运行。
3.5.6 (2009-02-14)
修复一个未测试的代码路径,该路径错误地尝试构造一个NotFound,并添加了一个测试。
3.5.5 (2009-02-04)
LP #322486:setStatus()现在允许任何可转换为int()的状态值。
3.5.4 (2008-09-22)
LP #98440:重试请求时接口丢失
LP #273296:在getPreferredLanguages()中更优雅地处理格式不正确的HTTP_ACCEPT_LANGUAGE头
LP #253362:在getPreferredCharsets()中更优雅地处理格式不正确的HTTP_ACCEPT_CHARSET头
LP #98284:将size参数传递给readline,因为zope.app.twisted中使用的twisted版本支持它。
修复LP #98284的修复问题:不要传递None类型的size参数,这会导致cStringIO对象因TypeError而崩溃。
3.5.3 (2008-06-20)
实际上,一些Web服务器(例如Paste)在数据传输后不发送EOF字符,如果没有指定预期内容长度,则缓存的流的read()操作将简单地挂起。
3.5.2 (2008-04-06)
之前处理非表单数据的修复破坏了对内容类型中包含额外信息的表单数据的处理,例如
application/x-www-form-urlencoded; charset=UTF-8
3.5.1 (2008-03-23)
当发布非表单(和非multipart)数据时,请求正文被消耗并丢弃。这使得处理其他post类型,如xml-rpc或json,变得不可能,除非使用过于复杂的“请求工厂”扭曲。
https://bugs.launchpad.net/zope2/+bug/143873
zope.publisher.http.HTTPCharsets被Zope 2发布者搞混了,它提供了关于其头信息的不准确信息。
3.5.0 (2008-03-02)
添加了PasteDeploy app_factory实现。这应该使得将Zope 3应用程序与PasteDeploy集成更加容易。它还使得控制使用的发布更加容易,从而提供了对应用程序策略的更多控制(例如,是否使用ZODB)。
3.4.2 (2007-12-07)
对URL的分段不再从路径段中删除(尾部)空白,以允许处理以%20结尾的URL。 (#172742)
3.4.1 (2007-09-29)
自3.4.1b2以来没有变化。
3.4.1b2 (2007-08-02)
添加对Python 2.5的支持。
修复了当要检索的对象是请求本身时,request.get()的问题。
3.4.1b1 (2007-07-13)
没有变化。
3.4.0b2 (2007-07-05)
LP #122054:HTTPInputStream现在理解两个环境变量:CONTENT_LENGTH和HTTP_CONTENT_LENGTH。它现在对空字符串也有容忍性,并将这些变量视为不存在。
3.4.0b1 (2007-07-05)
修复缓存问题。由于错误的content-length头查找,输入流从未在临时文件中缓存。除了之前使用的HTTP_CONTENT_LENGTH之外,还添加了CONTENT_LENGTH头检查。有时,一些CGI代理会添加HTTP_前缀,但CONTENT_LENGTH是正确的头信息,用于大小。
LP #98413:HTTPResponse.handleException应设置内容类型
3.4.0a1 (2007-04-22)
作为独立项目首次发布,对应于Zope 3.4.0a1中的zope.publisher
项目详细信息
下载文件
下载适合您平台的项目文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。