Django中实现对数据库操作的记录除了使用[开源插件]还可以使用信号signal独立实现

信号机制-观察者模式-发布与订阅:signal

- 配置

# 文件路径:Django/myapps/__init__.py
default_app_config = 'myapps.apps.MyAppsConfig'
# 文件路径:Django/myapps/apps.py
from django.apps import AppConfig
class MyAppsConfig(AppConfig):
name = 'myapps' def ready(self):
import myapps.signals.handlers

- 使用

#文件路径Django/myapps/signals.py
from django.dispatch import receiver
from django.core.signals import post_save#信号种类用很多下文介绍 @receiver(post_save, dispatch_uid="request_finished")
def my_signal_handler(sender, **kwargs):
instance = kwargs.instance
#instance保存了models中所有数据可以直接用或者用__dict__转换成dict使用
#想要执行的操作

- Django内置信号:

Model signals
pre_init # django的modal执行其构造方法前,自动触发
post_init # django的modal执行其构造方法后,自动触发
pre_save # django的modal对象保存前,自动触发
post_save # django的modal对象保存后,自动触发
pre_delete # django的modal对象删除前,自动触发
post_delete # django的modal对象删除后,自动触发
m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
Management signals
pre_migrate # 执行migrate命令前,自动触发
post_migrate # 执行migrate命令后,自动触发
Request/response signals
request_started # 请求到来前,自动触发
request_finished # 请求结束后,自动触发
got_request_exception # 请求异常后,自动触发
Test signals
setting_changed # 使用test测试修改配置文件时,自动触发
template_rendered # 使用test测试渲染模板时,自动触发
Database Wrappers
connection_created # 创建数据库连接时,自动触发

最新文章

  1. [css]实现垂直居中水平居中的几种方式
  2. Ubuntu 16.04 安装 Kodi v17 “Krypton” Alpha 2
  3. HDU 4819 Mosaic (二维线段树)
  4. python联接主流SQL的类库个人收藏
  5. IOS 支付功能的实现
  6. 表单插件——form
  7. 详解struts.multipart.saveDir的临时文件路径
  8. 什么是php?以及mysqlnd与libmysqlclient
  9. hadoop资料汇总(网上)
  10. mysql命令具体解释
  11. 单尺度二维离散小波分解dwt2
  12. SAP MM 根据采购订单反查采购申请?
  13. java中接口和继承的区别
  14. 【nodejs】初识 NodeJS(四)
  15. POJ 3903 Stock Exchange 【最长上升子序列】模板题
  16. 万恶之源 - Python 自定义模块
  17. openshift 容器云从入门到崩溃之一《容器能解决什么问题》
  18. ArcGIS Pro体验02——启动、创建工程
  19. composer包php-amqplib
  20. C#项目””是针对”.NETFramework,Version=v4.5.2”但此计算机没有,需要修改为v4.5.1.

热门文章

  1. Go的100天之旅-02基本语法
  2. mysql groupby 字段合并问题(group_concat)
  3. python+requests实现接口自动化
  4. react中实现可拖动div
  5. 面试官:连Spring三级缓存都答不好,自己走还是我送你?
  6. python新手70个练手项目
  7. MyBatis Plus 导入IdType失败
  8. 朝阳大妈也能听懂的git教程 (好人不谢)
  9. GitHub 热点速览 Vol.30:那些提升效率的小工具们
  10. 如何验证 names(名称), e-mails(邮件), 和 URLs