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'