金字塔形自省¶
在 1.3 版本加入.
当金字塔启动时,每个调用 configuration directive 导致一个或多个 introspectable 要在中注册的对象 introspector . 内省器可以通过应用程序代码进行查询,以获取有关正在运行的应用程序配置的信息。此功能对于调试工具栏、显示某些配置方面的命令行脚本以及启动时配置设置的运行时报告非常有用。
使用内省器¶
下面是一个从一个叫做金字塔的视图中使用金字塔的内省器的例子:
1from pyramid.view import view_config
2from pyramid.response import Response
3
4@view_config(route_name='bar')
5def show_current_route_pattern(request):
6 introspector = request.registry.introspector
7 route_name = request.matched_route.name
8 route_intr = introspector.get('routes', route_name)
9 return Response(str(route_intr['pattern']))
此视图将返回包含提供给 add_route
调用视图时匹配的路由的方法。它使用 pyramid.interfaces.IIntrospector.get()
返回类别中可内省的方法 routes
用一个 discriminator 等于匹配的路由名称。然后,它使用返回的内省来获取“模式”值。
内省器的查询方法返回的内省具有以下描述的方法和属性: pyramid.interfaces.IIntrospectable
. 尤其是, get()
, get_category()
, categories()
, categorized()
和 related()
内省器的方法可用于查询内省。
反省的对象¶
自省对象从自省器的查询方法返回。每个自省对象实现在中记录的属性和方法 pyramid.interfaces.IIntrospectable
.
所有自省者共享的重要属性如下:
title
描述反省的人类可读的文本标题
category_name
描述此自省所属自省类别的文本类别名称。如果期望在该类别中有多个可内省的注册,则通常是复数。
discriminator
一个哈希对象,表示该自省对象在其类别中的唯一值。
discriminator_hash
鉴别器的整数哈希(在HTML链接中很有用)。
type_name
此自省类别中的子类型的文本名称。如果这个自省的类别中只有一个类型名,那么这个值通常是类别名的单一版本,但它可以是任意值。
action_info
一个描述指令调用站点的对象,它导致此自省被注册。它包含中描述的属性
pyramid.interfaces.IActionInfo
.
除了具有上面描述的属性之外,自省也是类似字典的对象。可以通过ITS查询自省的数据值 __getitem__
, get
, keys
, values
或 items
方法。例如:
1route_intr = introspector.get('routes', 'edit_user')
2pattern = route_intr['pattern']
金字塔内省分类¶
下面是内置金字塔配置指令提供的具体自省类别列表。附加软件包可能提供此处未描述的类别中的其他自省。
subscribers
每个反省在
subscribers
类别表示调用pyramid.config.Configurator.add_subscriber()
(或装饰师的同等产品)。每个都有以下数据。
subscriber
订阅服务器可调用对象(
subscriber
参数传递给add_subscriber
)
interfaces
订阅的接口(或类)序列
ifaces
参数传递给add_subscriber
)
derived_subscriber
由系统内部使用的围绕订阅服务器的包装器,因此如果原始订阅服务器只接受一个参数,它可以使用多个参数来调用它。
predicates
将谓词参数传递给
add_subscriber
.
derived_predicates
将谓词参数传递给的结果创建的谓词对象周围的包装器
add_subscriber
(当谓词只接受一个值,但必须传递多个值时使用)。
response adapters
每个反省在
response adapters
类别表示调用pyramid.config.Configurator.add_response_adapter()
(或同等装饰师)。每个都有以下数据。
adapter
适配器对象(已解决
adapter
参数add_response_adapter
)
type
解决了
type_or_iface
参数传递给add_response_adapter
.
root factories
每个反省在
root factories
类别表示调用pyramid.config.Configurator.set_root_factory()
(或等同于配置器构造函数) or 一factory
参数传递给pyramid.config.Configurator.add_route()
. 每个都有以下数据。
factory
工厂对象(已解决
factory
参数set_root_factory
)
route_name
将使用此工厂的路线的名称。如果这是 违约 根工厂(如果在调用
set_root_factory
,此值将为None
.
session factory
只有一个内省会存在于
session factory
类别。它表示对pyramid.config.Configurator.set_session_factory()
(或等同于配置器构造函数)。它将包含以下数据。
factory
工厂对象(已解决
factory
参数set_session_factory
)
request factory
只有一个内省会存在于
request factory
类别。它表示对pyramid.config.Configurator.set_request_factory()
(或等同于配置器构造函数)。它将包含以下数据。
factory
工厂对象(已解决
factory
参数set_request_factory
)
locale negotiator
只有一个内省会存在于
locale negotiator
类别。它表示对pyramid.config.Configurator.set_locale_negotiator()
(或等同于配置器构造函数)。它将包含以下数据。
negotiator
工厂对象(已解决
negotiator
参数set_locale_negotiator
)
renderer factories
每个反省在
renderer factories
类别表示调用pyramid.config.Configurator.add_renderer()
(或等同于配置器构造函数)。每个都有以下数据。
name
渲染器的名称(
name
参数add_renderer
)
factory
工厂对象(已解决
factory
参数add_renderer
)
routes
每个反省在
routes
类别表示调用pyramid.config.Configurator.add_route()
. 每个都有以下数据。
name
这个
name
参数传递给add_route
.
pattern
这个
pattern
参数传递给add_route
.
factory
(解决)
factory
参数传递给add_route
.
xhr
这个
xhr
参数传递给add_route
.
request_method
这个
request_method
参数传递给add_route
.
request_methods
请求方法名称的序列由
request_method
参数传递给add_route
或价值None
如果Arequest_method
未提供参数。
path_info
这个
path_info
参数传递给add_route
.
request_param
这个
request_param
参数传递给add_route
.
header
这个
header
参数传递给add_route
.
accept
这个
accept
参数传递给add_route
.
traverse
这个
traverse
参数传递给add_route
.
custom_predicates
这个
custom_predicates
参数传递给add_route
.
pregenerator
这个
pregenerator
参数传递给add_route
.
static
这个
static
参数传递给add_route
.
use_global_views
这个
use_global_views
参数传递给add_route
.
object
这个
pyramid.interfaces.IRoute
对象,用于对此路由执行匹配和生成。
security policy
会有一个而且只有一个内省在
security policy
类别。它表示对pyramid.config.Configurator.set_security_policy()
方法(或其配置器构造函数等效项)。它将包含以下数据:
policy
策略对象(已解决
policy
参数set_security_policy
)
authentication policy
会有一个而且只有一个内省在
authentication policy
类别。它表示对pyramid.config.Configurator.set_authentication_policy()
方法(或其配置器构造函数等效)。它将包含以下数据。
policy
策略对象(已解决
policy
参数set_authentication_policy
)
authorization policy
会有一个而且只有一个内省在
authorization policy
类别。它表示对pyramid.config.Configurator.set_authorization_policy()
方法(或其配置器构造函数等效)。它将包含以下数据。
policy
策略对象(已解决
policy
参数set_authorization_policy
)
default permission
会有一个而且只有一个内省在
default permission
类别。它表示对pyramid.config.Configurator.set_default_permission()
方法(或其配置器构造函数等效)。它将包含以下数据。
value
传递给的权限名称
set_default_permission
.
default csrf options
会有一个而且只有一个内省在
default csrf options
类别。它表示对pyramid.config.Configurator.set_default_csrf_options()
方法。它将包含以下数据。
require_csrf
的默认值
require_csrf
如果在呼叫时未指定pyramid.config.Configurator.add_view()
.
token
在中搜索的令牌的名称
request.POST
找到有效的CSRF令牌。
header
搜索以查找有效CSRF令牌的请求头的名称。
safe_methods
被视为安全且不受CSRF检查的HTTP方法列表。
views
每个反省在
views
类别表示调用pyramid.config.Configurator.add_view()
. 每个都有以下数据。
name
这个
name
参数传递给add_view
.
context
(解决)
context
参数传递给add_view
.
containment
(解决)
containment
参数传递给add_view
.
request_param
这个
request_param
参数传递给add_view
.
request_methods
请求方法名称的序列由
request_method
参数传递给add_view
或价值None
如果Arequest_method
未提供参数。
route_name
这个
route_name
参数传递给add_view
.
attr
这个
attr
参数传递给add_view
.
xhr
这个
xhr
参数传递给add_view
.
accept
这个
accept
参数传递给add_view
.
header
这个
header
参数传递给add_view
.
path_info
这个
path_info
参数传递给add_view
.
match_param
这个
match_param
参数传递给add_view
.
csrf_token
这个
csrf_token
参数传递给add_view
.
callable
(解决)
view
参数传递给add_view
. 表示可调用的“原始”视图。
derived_callable
可调用的视图来自
view
参数传递给add_view
. 表示金字塔本身调用的视图可调用(包装在安全和其他包装中)。
mapper
(解决)
mapper
参数传递给add_view
.
decorator
(解决)
decorator
参数传递给add_view
.
permissions
每个反省在
permissions
类别表示调用pyramid.config.Configurator.add_view()
有明确的permission
论点 or 对…的呼唤pyramid.config.Configurator.set_default_permission()
. 每个都有以下数据。
value
传递给的权限名称
add_view
或set_default_permission
.
templates
每个反省在
templates
类别表示调用pyramid.config.Configurator.add_view()
那有renderer
指向模板的参数。每个都有以下数据。
name
渲染器的名称(字符串)。
type
渲染器的类型(字符串)。
renderer
这个
pyramid.interfaces.IRendererInfo
表示此模板的呈现器的对象。
view mappers
每个反省在
view mappers
类别表示调用pyramid.config.Configurator.add_view()
有明确的mapper
论点 or 对…的呼唤pyramid.config.Configurator.set_view_mapper()
. 每个都有以下数据。
mapper
(解决)
mapper
参数传递给add_view
或set_view_mapper
.
asset overrides
每个反省在
asset overrides
类别表示调用pyramid.config.Configurator.override_asset()
. 每个都有以下数据。
to_override
这个
to_override
参数(资产规格)传递给override_asset
.
override_with
这个
override_with
参数(资产规格)传递给override_asset
.
translation directories
每个反省在
translation directories
类别表示specs
参数传递给pyramid.config.Configurator.add_translation_dirs()
. 每个都有以下数据。
directory
转换目录的绝对路径。
spec
资产规格传递给
add_translation_dirs
.
tweens
每个反省在
tweens
类别表示调用pyramid.config.Configurator.add_tween()
. 每个都有以下数据。
name
以字符串形式传递给Tween工厂的点状名称(作为
tween_factory
参数add_tween
)
factory
工厂对象之间的(已解决的)。
type
implicit
或explicit
作为字符串。
under
这个
under
参数传递给add_tween
(字符串)
over
这个
over
参数传递给add_tween
(字符串)
static views
每个反省在
static views
类别表示调用pyramid.config.Configurator.add_static_view()
. 每个都有以下数据。
name
这个
name
参数提供给add_static_view
.
spec
标准化版本的
spec
参数提供给add_static_view
.
traversers
每个反省在
traversers
类别表示调用pyramid.config.Configurator.add_traverser()
. 每个都有以下数据。
iface
表示将使用此遍历器的根工厂的返回值的(已解析)接口或类对象。
adapter
(解析的)遍历器类。
resource url adapters
每个反省在
resource url adapters
类别表示调用pyramid.config.Configurator.add_resource_url_adapter()
. 每个都有以下数据。
adapter
(已解析)资源URL适配器类。
resource_iface
表示为其注册此URL适配器的资源接口的(已解析)接口或类对象。
request_iface
表示为其注册此URL适配器的请求接口的(已解析)接口或类对象。
工具栏中的自省¶
金字塔调试工具栏( pyramid_debugtoolbar
package)提供所有注册自省及其关系的隐藏视图。它当前位于主导航中的“全局”选项卡下,如下所示:
禁用内省¶
你可以通过传递标志来禁用金字塔内省。 introspection=False
到 Configurator 应用程序设置中的构造函数:
from pyramid.config import Configurator
config = Configurator(..., introspection=False)
什么时候? introspection
是 False
,将丢弃由配置指令生成的所有自省。