连接到repose.zope2,允许第三方包注册一系列钩子,这些钩子可以在响应返回浏览器之前对其进行修改
项目描述
简介
plone.transformchain 提供了修改使用 repoze.zope2 或“经典” ZPublisher 发布的页面响应的方法,在将其返回给浏览器之前。
注册一个名为(发布,请求)的独特适配器,提供 ITransform 接口。 published 是发布的对象,例如视图;request 是当前请求。
可以通过适配器的 order 属性来维持转换的顺序。
将根据从发布者获取的输入类型和/或之前的方法调用三种方法之一。
transformBytes() 在输入是 str(字节)对象时被调用
transformUnicode() 在输入是 unicode 对象时被调用
transformIterable() 在输入是其他类型的可迭代对象时被调用
每个阶段可以返回字节字符串、unicode 字符串或可迭代对象。
大多数转换器将具有“自然”的结果表示,并将实现相应的方法以返回相同表示的另一个值,例如实现 transformUnicode() 以转换并返回 unicode 对象。其他方法可以实施为返回 None(不执行任何操作)或将值转换为适当的类型。
链中的第一个转换器可能会得到
如果转换器在标准 Zope 2 ZPublisher 下运行,则为字节字符串。
如果转换器在 repoze.zope2 或另一个 WSGI 管道下运行,则为可迭代对象。
检查 self.request.response.getHeader('content-type') 以查看结果的类型。当可迭代对象展开时,它将符合此类型,例如对于“text/html”,''.join(result) 应该是一个 HTML 字符串。
返回值将传递给链中的下一个转换。最终的转换应该返回 unicode 字符串、编码字符串或可迭代对象。
如果链中的最后一个转换返回字节字符串或 unicode 字符串,则 Content-Length 标头将自动更新。
返回 None 以表示结果不应从之前的转换中更改。
以下是一个将所有内容转换为大写的示例
from zope.component import adapter from zope.interface import implementer from zope.interface import Interface from plone.transformchain.interfaces import ITransform @implementer(ITransform) @adapter(Interface, Interface) # any context, any request class UpperTransform(object): order = 1000 def __init__(self, published, request): self.published = published self.request = request def transformBytes(self, result, encoding): return result.upper() def transformUnicode(self, result, encoding): return result.upper() def transformIterable(self, result, encoding): return [s.upper() for s in result]
您可以在 ZCML 中注册此内容
<adapter factory=".transforms.UpperTransform" name="example.uppertransform" />
如果您需要关闭特定请求的转换,可以在 request.environ 中设置一个键
request.environ['plone.transformchain.disable'] = True
这将保留响应不变,并且不会调用任何 ITransform 适配器。
变更日志
3.0.1 (2024-01-22)
内部
更新配置文件。[plone 开发者] (6e36bcc4, 7723aeaf)
3.0.0 (2023-04-27)
破坏性更改
删除 Python 2 和 Plone 5.2 兼容性。[gforcada] (#6)
内部
更新配置文件。[plone 开发者] (3333c742)
2.0.2 (2020-04-22)
错误修复
小包装更新。[#1]
2.0.1 (2018-11-04)
错误修复
更多 py3 测试和功能修复。[pbauer, thet]
2.0.0 (2018-06-20)
破坏性更改
删除对 Python 2.6 的支持。[jensens]
新功能
使 ZServer 可选
错误修复
更多 Python 2/3 兼容性修复。[pbauer, thet]
1.2.2 (2018-02-11)
错误修复
添加 Python 2/3 兼容性。[vincero]
1.2.1 (2017-06-28)
错误修复
删除 unittest2 依赖项。[kakshay21]
1.2.0 (2016-06-21)
新功能
添加事件来在所有/单个转换执行前后通知。[jensens]
1.1.0 (2016-02-21)
新功能
需要 Zope2 >= 2.13.23。[jensens]
修复
PEP8 等.使用 zca 装饰器,...[jensens]
1.0.4 (2015-05-11)
小清理:空白、git 忽略、rst。[gforcada, rnix, maurits]
1.0.3 (2013-01-13)
存在 charset 正则表达式问题,它期望在 mime-type 和 charset 之间有一个空格,并且只有一个空格。因此,像“text/html;charset=utf-8”这样的有效值不匹配,并返回了默认编码。我们通过允许任何数量的空格(包括零)来修复了它。[jpgimenez]
1.0.2 (2012-01-26)
修复打包错误。[esteele]
1.0.1 (2012-01-26)
计算错误状态并将其存储在请求中。针对 Zope 2.13 发布事件中的错误进行处理:当通知 IPubBeforeAbort 时,response.status 未设置。[注意]
不要转换 FTP 请求 [rochecompaan]
1.0 - 2011-05-13
最终版本 1.0。 [esteele]
1.0b1 - 2010-04-21
初始版本
项目详情
plone.transformchain-3.0.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5cf9b0168bb13cb057ee6f2eeebd5d3930a8124fc5739d8f185af3c4e4dff7c0 |
|
MD5 | cf5eb3fd00e765a52028467832084d81 |
|
BLAKE2b-256 | 2ba85cd404b44a910163025fb56a05667a5a5ef70874079c7cacee447d94f0d4 |
plone.transformchain-3.0.1-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb6e13a2535a2d38a2c24c94c941e005677e0a5a6d39d44e04edeab9e2c34b8a |
|
MD5 | 042f8a01c7be196302d77f7a29c38f5e |
|
BLAKE2b-256 | 59fffee6e82c73e2ea5627660651934e2c4c512817b0371d64f9b3857fdf6178 |