博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 信号
阅读量:7070 次
发布时间:2019-06-28

本文共 1623 字,大约阅读时间需要 5 分钟。

django信号

Django 提供一个“信号分发器”,允许解耦的应用在框架的其它地方发生操作时会被通知到。 简单来说,信号允许特定的sender通知一组receiver某些操作已经发生。 这在多处代码和同一事件有关联的情况下很有用。

位置: django.db.models.signals

常用:

pre_save **

django.db.models.signals.pre_save

  • 这是在模型的save()方法的开头发送的。

带有此信号的参数:

  • sender

    模型类。

    instance
    正在保存的实际实例。
    raw
    一个布尔值True如果模型按照显示的方式保存(即当加载固定装置时)。 不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。
    using
    正在使用的数据库别名。
    update_fields
    如果有字段被传递给Model.save()方法那么就是所传递的字段集,否则就是None。

    在任意位置写函数绑定即可

    # 导入 信号from django.db.models.signals import pre_savedef my_callback(sender, **kwargs):    print(sender)  # 激活函数的 model    print(kwargs)    print("要保存了啊!")    print('-' * 120)# 绑定信号pre_save.connect(my_callback)

post_save **

django.db.models.signals.post_save

  • 像pre_save一样,但是在save()方法的末尾发送。

带有此信号的参数:

  • sender

    模型类。

    instance
    正在保存的实际实例。
    created
    一个布尔值True如果创建了新记录。
    raw
    一个布尔值True如果模型按照显示的方式保存(即当加载固定装置时)。 不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。
    using
    正在使用的数据库别名。
    update_fields
    如果有字段被传递给Model.save()方法那么就是所传递的字段集,否则就是None。

pre_delete

django.db.models.signals.pre_delete

  • 在模型的delete()方法和queryset的delete()方法的开头发送。

带有此信号的参数:

  • sender

    模型类。

    instance
    正在删除的实际实例。
    using
    正在使用的数据库别名。

post_delete

django.db.models.signals.post_delete

  • 像pre_delete一样,但是在模型的delete()方法和queryset的delete()方法的末尾发送。

带有此信号的参数:

  • sender

    模型类。

    instance
    正在删除的实际实例。

    请注意,该对象将不再位于数据库中,所以要非常小心使用此实例。

    using

    正在使用的数据库别名。

使用装饰器方法:

from django.dispatch import receiver

# 使用装饰器方式from django.db.models.signals import pre_savefrom django.dispatch import receiver@receiver(pre_save, sender="xxx") # sender 发送者def my_callback(sender, **kwargs):    print(sender)    print(kwargs)    print("要保存了啊!")    print('-' * 120)

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10800413.html

你可能感兴趣的文章
kafka基本命令启动和测试
查看>>
你真的已经搞懂JavaScript了吗?
查看>>
Xmanger4远程桌面Ubuntu 12.04
查看>>
WBS分解
查看>>
Merge into 详细介绍
查看>>
apk签名
查看>>
java 获取图片尺寸及大小
查看>>
Web图表开发工具JFreeChart与ChartDirector使用评测
查看>>
交互设计的KISS原则
查看>>
Cat 部署
查看>>
个性化PS1变量
查看>>
IOS之UIWebView的使用
查看>>
分布式系统事务一致性解决方案
查看>>
ubuntu下nvm,node以及npm的安装与使用
查看>>
BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换
查看>>
BaseAdapter封装
查看>>
java输入输出专题--第二部分
查看>>
写了一个求质数的算法,Mark一下
查看>>
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 12
查看>>
getaddrinfo()
查看>>