Django提供一种信号机制。其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) 。当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行。
Django内置了一些信号,比如:
- django.db.models.signals.pre_save 在某个Model保存之前调用
- django.db.models.signals.post_save 在某个Model保存之后调用
- django.db.models.signals.pre_delete 在某个Model删除之前调用
- django.db.models.signals.post_delete 在某个Model删除之后调用
- django.core.signals.request_started 在建立Http请求时发送
- django.core.signals.request_finished 在关闭Http请求时发送
我们要做的,就是注册一个receiver函数。例如,如果要在每次请求完成之后,打印一行字。
可以使用回调的方式注册:
也可以使用装饰器的方式注册,下面这段代码和上面完全是等价的。
receiver回调函数除了可以使用sender之外,还可以使用其他一些参数,比如针对pre_save函数:
- sender:发送者(如果是pre_save的话,就是model class)
- instance:实例
- raw
- using
- update_fields
post_save()是一个比较实用函数,可以支持一些联动的更新。而不必让我们每次都写在view里面。比如:有用户提交了退款申请,我们需要把订单的状态修改成“已退款”的状态。就可以使用信号机制,而不必在每处都修改。
当然,这里可以写的更多更周全,例如退款单取消改回状态等。
观察者是非常实用的一个设计模式,Django也支持用户自定义一些信号。
相关推荐
Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 1、Django内置信号 Model signals pre_init # django的modal执行其构造方法...
Django的信号机制是其框架内的一种解耦合策略,它允许开发者在特定事件发生时触发自定义操作,实现模块间的通信,而无需硬编码这些依赖。这种机制基于观察者模式,也就是发布-订阅模式,使得不同的部分可以独立地...
- **信号机制**:讲解Django信号机制的工作原理,以及如何使用信号来扩展系统行为。 #### 十五、中间件(第十五章) - **中间件的概念**:介绍中间件的基本概念及其工作流程。 - **自定义中间件**:说明如何编写...
首先,理解Django信号机制的三个基本元素: 1. 发送者(Senders):触发信号的实体,通常是Django的某些内建功能或用户自定义的操作。 2. 信号(Signals):实际的信息载体,代表特定事件的发生。 3. 接收者...
- **信号**:描述了Django信号机制的工作原理和使用方法。 #### 6. 实用指南 - **使用REMOTE_USER进行认证**:说明了如何通过远程用户认证来控制访问权限。 - **编写自定义django-admin命令**:提供了如何创建...
- **信号**:讲解了 Django 信号机制及其应用场景。 ##### 4. “如何做”指南 - **使用 REMOTE_USER 进行认证**:介绍了如何使用 REMOTE_USER 实现认证。 - **编写自定义 django-admin 命令**:教授了如何添加...
- **信号机制**:介绍了 Django 信号机制的工作原理及其应用场景。 - **废弃功能**:列出了 Django 1.3 版本中不再支持的一些特性。 #### 四、“实战指南” - **身份验证**:提供了一系列针对 Apache 和 REMOTE_...
Django信号与事件监听 Django缓存机制与性能优化 Django错误处理与调试技巧 Django部署与生产环境配置 Django高级特性:自定义管理后台 Django高级特性:RESTful API开发 Django高级特性:WebSocket与实时通信 ...
- **3.21 信号机制**:讲解了 Django 中信号机制的应用场景和实现方式。 #### 四、“如何做”指南 - **4.1 至 4.13 实战案例**:这一系列章节涵盖了从认证用户到 PDF 输出等各种实用案例,旨在帮助开发者解决实际...
#### 四、Django信号机制 **Django信号**是一种异步通信方式,允许某些发送者通知一组接收者已经发生了某个动作。这种机制非常灵活,可以用来扩展Django的核心功能,比如在保存模型之前执行额外的操作。 ##### `pre...
文档会介绍Django信号的使用。 20. 系统检查框架 系统检查框架可以帮助开发者发现配置和代码中可能存在的问题。文档中会介绍这个框架是如何工作的。 21. 序列化 序列化是指将对象转换为能被存储或传输的格式的过程...
**Django框架与信号机制详解** Django是一个高级的Python Web框架,它鼓励快速开发和清洁、实用的设计。在Django中,信号是处理事件的一种方式,它允许不同的应用程序之间进行松散耦合的通信。在本文中,我们将深入...
Django信号系统是框架内的一种事件驱动机制,它可以在特定事件发生时触发接收器(receiver)执行某些操作。例如,当模型实例被创建、保存、删除时,都可以触发相应的信号。这对于实现跨模型或跨应用的功能扩展非常...
Django的信号机制提供了一种方式,使得在特定操作执行前后,如模型保存、删除等,可以触发自定义的行为。这些行为通常由注册的接收器(receiver)函数来执行。Django自身定义了一些常见的信号,例如`request_started...
- **Signals**: Django的信号机制,允许解耦模型和其他部分的代码。 - **System check framework**: 系统检查框架,用于在开发过程中检查代码问题。 - **External packages**: Django插件和扩展,介绍如何将外部包...