Pyramid1.2的新功能¶
本文解释了 Pyramid 1.2版与其前代版本相比, Pyramid 1.1。它还记录了两个版本之间的向后不兼容,以及添加到Pyramid1.2的拒绝,以及软件依赖性更改和显著的文档添加。
主要功能添加¶
Pyramid1.2中的主要功能添加如下。
调试工具栏¶
Pyramid附带的脚手架包现在包含一个调试工具栏组件,该组件可用于交互式调试应用程序。见 调试工具栏 更多信息。
route_prefix
要包含的参数¶
这个 pyramid.config.Configurator.include()
方法现在接受 route_prefix
参数。这个参数允许您从不同的包中组合URL调度应用程序。见 使用路由前缀组成应用程序 更多信息。
吐温¶
A tween 用于包装Pyramid路由器的主要请求处理功能。这是一个特性,可以被Pyramid框架扩展所使用,例如,提供视图定时支持,并且可以提供一个方便的地方来挂起簿记代码。粗呢有点像 WSGI middleware 但可以访问Pyramid功能,如渲染器和全功能请求对象。
为了支持这个特性,存在一个名为 pyramid.config.Configurator.add_tween()
. 此指令添加了一个“tween”。
粗花呢在 登记吐温 .
现在存在一个新的粘贴程序命令: paster ptweens
. 此命令打印应用程序的当前tween配置。见标题部分 ptweens :显示“Tweens” 更多信息。
脚手架变更¶
所有脚手架现在都使用
pyramid_tm
包而不是repoze.tm2
middleware 管理交易管理。ZODB脚手架现在使用
pyramid_zodbconn
包而不是repoze.zodbconn
提供ZODB集成的包。所有脚手架现在都使用
pyramid_debugtoolbar
包而不是WebError
提供交互式调试功能的包。通过脚手架创建的项目不再依赖于
WebError
包;配置在production.ini
用于要求其error_catcher
middleware 已删除。配置错误捕获/电子邮件发送现在是pyramid_exclog
包(请参阅https://docs.pylonsproject.org/projects/pyramid-exclog/en/latest/)。所有脚手架现在都发送
cache_max_age
参数add_static_view
方法。
次要功能添加¶
这个
[pshell]
ini配置文件中的节现在处理setup
键作为点名称,指向传递给引导环境的可调用项。它可以根据需要在paster pshell
会话。此功能在 写剧本 .名为的新配置设置
pyramid.includes
现在可用。其描述见 包括包裹 .增加了一个
pyramid.security.NO_PERMISSION_REQUIRED
用于的常量permission=
查看配置的语句。此常量的值为字符串__no_permission_required__
. 这个字符串值以前在文档中引用过;现在文档使用常量。添加了一种基于装饰器的配置响应适配器的方法:
pyramid.response.response_adapter
. 这个装饰器和pyramid.config.Configurator.add_response_adapter()
但它是声明性的。这个
pyramid.events.BeforeRender
事件现在有一个名为rendering_val
. 这可用于自省beforerender订阅服务器中视图返回的值。Pyramid调试记录器现在使用标准的日志配置(通常通过粘贴作为启动的一部分来设置)。这意味着,例如
debug_notfound
,debug_authorization
等将进入正常的测井通道。调试记录器的记录器名称将是 呼叫者 配置器的构造函数。请求对象上有一个新属性可用:
exc_info
. 它的价值将是None
直到一个异常被Pyramid路由器捕获,之后它将是sys.exc_info()
.pyramid.testing.DummyRequest
现在实现add_finished_callback
和add_response_callback
方法实施者pyramid.request.Request
.新的方法
pyramid.config.Configurator
类:set_authentication_policy()
和set_authorization_policy()
. 这些内容主要由希望提供注册安全策略的包的附加组件作者使用。新的配置器方法:
pyramid.config.Configurator.set_root_factory()
,可以在构造配置器之后设置根工厂。Pyramid不再急切地在提交一些默认的配置语句 Configurator 构造时间,允许将值作为构造函数参数传入(例如
authentication_policy
和authorization_policy
)覆盖通过pyramid.config.Configurator.include()
方法。更好的mako渲染异常;当mako渲染引发异常时,将显示导致错误的模板行。
新的请求方法:
current_route_url()
,current_route_path()
和static_path()
.中的新功能
pyramid.url
模块:current_route_path()
和static_path()
.这个
pyramid.request.Request.static_url()
API(及其同类产品)pyramid.request.Request.static_path()
,pyramid.url.static_url()
和pyramid.url.static_path()
)现在接受绝对文件名作为“path”参数。只要文件名位于以前注册为静态视图的目录中,就会生成指向资产的URL。以前,尝试使用绝对文件路径生成资产的URL会引发ValueError。这个
RemoteUserAuthenticationPolicy
,AuthTktAuthenticationPolicy
和SessionAuthenticationPolicy
构造函数现在接受一个名为debug
. 默认情况下,此关键字参数为False
. 当它是True
,当authenticated_userid
或effective_principals
对这些策略中的任何一个调用方法。当试图诊断与身份验证相关的问题时,生成的输出可能很有用。新建视图谓词:
match_param
. 示例:通过添加的视图config.add_view(aview, match_param='action=edit')
只有当request.matchdict
其中有一个名为的值action
具有价值edit
.支持一个
onerror
关键字参数pyramid.config.Configurator.scan()
. 此参数传递给venusian.Scanner.scan()
在扫描期间引发异常时影响错误行为。这个
request_method
谓词参数pyramid.config.Configurator.add_view()
和pyramid.config.Configurator.add_route()
现在允许是HTTP方法名的元组。以前它被限制为表示单个HTTP方法名的字符串。未删节的
pyramid.traversal.find_model
,pyramid.traversal.model_path
,pyramid.traversal.model_path_tuple
和pyramid.url.model_url
在Pyramid1.0中都被弃用了。把它们作为它们重命名后的别名永远保留下来,只需要很少的成本。resource_*
带前缀的函数。未删节的
pyramid.view.bfg_view
在Pyramid1.0中已弃用。这是一个低成本的别名pyramid.view.view_config
我们将永远留在这里。路由模式替换标记名称现在可以以下划线开头。请参阅https://github.com/pylons/pyramid/issues/276。
废弃¶
所有Pyramid相关 deployment settings (例如)
debug_all
,debug_notfound
)现在要加前缀pyramid.
. 例如:debug_all
>pyramid.debug_all
. 旧的无前缀设置将无限期地继续工作,但提供这些设置可能会打印一个拒绝警告。所有脚手架和教程都已更改为使用前缀设置。这个 deployment settings 当您试图通过
__getattr__
而不是通过__getitem__
.
向后不兼容¶
如果字符串作为
debug_logger
参数 Configurator ,该字符串被认为是全局python记录器的名称,而不是记录器实例的点状名称。这个
pyramid.config.Configurator.include()
方法现在只接受一个callable
参数。一 序列 过去允许的可调用文件。如果你超过一个callable
到pyramid.config.Configurator.include()
,它会断裂。现在您必须对每个可调用的方法进行单独的调用。在使用“自动提交”时,可能需要更strict地对配置路由和视图语句进行排序。 Configurator . 在过去,当您使用自动提交配置程序时,可以在添加具有该名称的路由之前添加一个名为路由名称的视图。例如:
config = Configurator(autocommit=True) config.add_view('my.pkg.someview', route_name='foo') config.add_route('foo', '/foo')
当视图试图添加自身时,上述操作将引发异常。现在,在添加视图之前必须添加路由:
config = Configurator(autocommit=True) config.add_route('foo', '/foo') config.add_view('my.pkg.someview', route_name='foo')
这不会影响“普通”用户,只影响那些拥有使用自动提交配置器的遗留BFG代码库的用户,并且可能会影响使用configuratorapi(由
pyramid.testing.setUp()
是自动提交配置程序)。解决此问题的正确方法是使用默认的非自动提交配置程序,该配置程序没有这些指令排序要求:config = Configurator() config.add_view('my.pkg.someview', route_name='foo') config.add_route('foo', '/foo') The above will work fine.
这个
pyramid.config.Configurator.add_route()
指令不再返回路由对象。为了使路由与视图配置处理正常工作,需要进行此更改。
行为差异¶
当服务静态文件时,不再设置etag头。设置最后修改的标题。
静态文件服务不再支持
wsgi.file_wrapper
延伸。而不是返回
403 Forbidden
错误:当提供的静态文件由于文件权限而无法被Pyramid进程的用户访问时,将引发IOERROR(或类似的)错误。
文档增强功能¶
使用
route_url
,route_path
,resource_url
,static_url
和current_route_url
中的函数pyramid.url
包现在已更改为使用请求的同名方法。添加了一个标题为 使用路由前缀组成应用程序 到“URL发送”叙述性文档一章。
向API文档添加了一个新模块:
pyramid.tweens
.增加了一个 登记吐温 章节到“Hook”叙述章节。
增加了一个 ptweens :显示“Tweens” 章节到“命令行Pyramid”的叙述章节。
增加了一个 登录 叙述性文件的章节。
所有教程现在都使用-
route_url
,route_path
,resource_url
,static_url
和current_route_url
方法pyramid.request.Request
而不是从pyramid.url
.zodb wiki教程现在使用
pyramid_zodbconn
包而不是repoze.zodbconn
提供ZODB集成的包。补充 金字塔的独特之处 引言叙述章节。
依赖关系更改¶
Pyramid现在依赖于pastescript>=1.7.4。此版本包含允许灵活日志配置的重要功能。
Pyramid现在需要金星1.0A1或更好的支持
onerror
关键字参数pyramid.config.Configurator.scan()
.这个
zope.configuration
包不再是依赖项。