django 信号的使用

django 中信号的使用记录

1,在app应用文件夹下 创建一个 signals.py的文件

2,在signals.py 文件中导入相关的python包

1 from django.db.models.signals import post_save
2 from order.models import WithDrawOrder
3 from django.dispatch import receiver, Signal
4

3,在该文件下编写相关代码:

@receiver(post_save, sender=WithDrawOrder)
def create_withdraw_order(sender, instance, created, **kwargs):
    if created:
        content = '{}相关操作'.format(instance.user.username)
        create_dist = {
            "log_type": 2,
            "content": content,
            "user_id": instance.user.id,

        }
        print('信号触发')

4,编写好signals.py 文件后,进入该app应用下的 apps.py文件中 ,添加如下代码

from django.apps import AppConfig


class UsersConfig(AppConfig): 
    name = 'users'

    def ready(self):              #项目启动时自动加载 users的signals 文件
        import users.signals

5,在app应用文件夹下的 __init__.py 文件中 添加:(否则信号无法启动)

1 default_app_config = 'proxy.apps.UsersConfig'

 6,结束!!

原文地址:https://www.cnblogs.com/noteaddr/p/12915848.html