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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010377372/article/details/80812803

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,这样才能触发信号
     ...

]


猜你喜欢

转载自blog.csdn.net/u010377372/article/details/80812803
今日推荐