- Python Pyramid 教程
- Python Pyramid - 首页
- Python Pyramid - 概述
- Pyramid - 环境搭建
- Python Pyramid - Hello World
- Pyramid - 应用配置
- Python Pyramid - URL 路由
- Python Pyramid - 视图配置
- Python Pyramid - 路由前缀
- Python Pyramid - 模板
- Pyramid - HTML 表单模板
- Python Pyramid - 静态资源
- Python Pyramid - 请求对象
- Python Pyramid - 响应对象
- Python Pyramid - 会话
- Python Pyramid - 事件
- Python Pyramid - 消息闪现
- Pyramid - 使用 SQLAlchemy
- Python Pyramid - Cookiecutter
- Python Pyramid - 创建项目
- Python Pyramid - 项目结构
- Python Pyramid - 包结构
- 手动创建项目
- 命令行 Pyramid
- Python Pyramid - 测试
- Python Pyramid - 日志
- Python Pyramid - 安全性
- Python Pyramid - 部署
- Python Pyramid 有用资源
- Python Pyramid - 快速指南
- Python Pyramid - 有用资源
- Python Pyramid - 讨论
Python Pyramid - 事件
Pyramid 应用在其生命周期中会发出各种事件。虽然这些事件通常不需要使用,但是通过正确处理这些事件可以执行稍微高级的操作。
只有当您使用订阅者函数注册 Pyramid 框架广播的事件时,该事件才可用。发出的事件必须用作订阅者函数的参数。
def mysubscriber(event):
print("new request")
但是,只有当使用add_subscriber()方法将其添加到应用程序的配置中时,订阅者函数才能运行,如下所示:
在下面的代码片段中,应用程序被配置为在发出NewRequest对象时调用订阅者函数。
from pyramid.events import NewRequest config.add_subscriber(mysubscriber, NewRequest)
还有一个@subscriber()装饰器用于配置事件。
from pyramid.events import NewRequest
from pyramid.events import subscriber
@subscriber(NewRequest)
def mysubscriber(event):
print ("new request")
与装饰器视图配置一样,这里也必须执行config.scan()才能使装饰器生效。
如前所述,Pyramid 应用发出各种事件类型。这些事件类可在pyramid.event模块中找到。它们列在下面:
ApplicationCreated - 当调用 Configurator 类的 config.make_wsgi_app() 方法以返回 WSGI 应用程序对象时,就会传输此事件。
NewRequest - 每当 Pyramid 应用程序开始处理传入请求时,都会发出此事件类的一个对象。此对象具有一个request属性,该属性是由 WSGI 环境字典提供的请求对象。
ContextFound - 应用程序的路由器遍历所有路由并找到与 URL 模式的适当匹配。这就是 ContextFound 类对象实例化的时候。
BeforeTraversal - 在 Pyramid 路由器尝试查找路由对象之后但执行任何遍历或视图代码之前,会发出此类的实例作为事件。
NewResponse - 正如名称所示,每当任何 Pyramid 视图可调用对象返回响应时,都会引发此事件。此对象具有request和response属性。
BeforeRender - 在调用渲染器之前,会将此类型的对象作为事件传输。此事件的订阅者函数可以访问应用程序的全局数据(以 dict 对象的形式),并可以修改一个或多个键的值。