信号
Django 包含一个信号调度器,它帮助已解耦的应用程序在框架中的其它地方发生操作时可以得到通知。简而言之,信号允许某些 发送器 通知一组 接收器 某些操作已经发生。当许多代码段可能对同一事件感兴趣时,它们特别有用。
Django 提供了 内置信号集 使用户代码能够获得 Django 自身某些操作的通知。其中包括一些有用的通知:
-
django.db.models.signals.pre_save
&django.db.models.signals.post_save
一个模型的
save()
方法被调用之前或之后发出。 -
django.db.models.signals.pre_delete
&django.db.models.signals.post_delete
-
django.db.models.signals.m2m_changed
一个模型的
ManyToManyField
更改后发出。 -
django.core.signals.request_started
&django.core.signals.request_finished
Django 发起或结束一个 HTTP 请求后发出。
查看 内置信号文档 以获取每个信号的完整列表和说明。
你还可以 定义和发送自定义信号,详细实践见下文。