django signals示例;django 内置信号未触发;django signal not triggered

django version 1.11.9

前言

折腾了好几天信号终于走通了。编写的信号总是不能触发。信号触发主要需要三个条件:

1.信号能正常工作

2.在app的config中触发信号

3.在settings中使用自定义的AppConfig

1.编写signals

代码如下signals.py,django对于信号推荐位置的是:app所在目录下新建名为signals.py的文件

from django.db.models.signals import post_delete
from django.dispatch import receiver
from device.models import Device  # replace with your Model 


@receiver(post_delete, sender=Device, weak=False)
def delete_comment_after(sender):
    print('device delete')
    print(sender)

2.编写 AppConfig,位于 app下 apps.py,代码如下:

from django.apps import AppConfig


class DeviceConfig(AppConfig):
    name = 'device'
    verbose_name = '设备'

    def ready(self):
        import device.signals

3.在settings.py中修改INSTALL_APPS代码如下:

INSTALLED_APPS = [
    ...
    #'device' ---> 'device.apps.DeviceConfig'
    'device.apps.DeviceConfig', 
    # 默认情况下我们通常叫做device,但是因为信号需要在自定义的AppConfig中触发,因此必须把
    # device修改为 device.apps.DeviceConfig,这样才能触发信号
     ...

]


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值