【Django】signals信号功能 完整实例

Django 的信号功能很好用,在做通知等等功能或者做数据的后续处理都用的到。可以让你在模型实例发生变化时执行特定的操作。

下面是一个完整的示例

第一步(省略)

        假设已经有一个模型SalesLead

第二步

定义一个信号

# signals.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import SalesLead
import logging

# 配置日志
logger = logging.getLogger(__name__)

@receiver(post_save, sender=SalesLead)
def sales_lead_created(sender, instance, created, **kwargs):
    if created:
        # 当 SalesLead 实例新增时执行的操作
        logger.info(f"SalesLead 新增了一条记录: {instance.name} ({instance.email})")
        # 你可以在这里添加更多逻辑,例如发送邮件或通知
        send_notification(instance) #收到created信号的执行函数

def send_notification(instance):
    # 示例:发送通知
    logger.info(f"Sending notification for SalesLead: {instance.name}")
    # 这里可以添加实际的通知逻辑,例如发送邮件或短信

第三步

注册信号

信号文件必须要注册到app里才能执行;确保在   __init__.py   文件中导入   apps.py   中的   AppConfig  :

# apps.py
from django.apps import AppConfig

class YourAppConfig(AppConfig):
    name = 'your_app_name'

    def ready(self):
        import your_app_name.signals  # 替换为你的信号文件路径
# __init__.py
default_app_config = 'your_app_name.apps.YourAppConfig'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值