padampadam,夏文婧,寓小二
其实可以理解为django内部的钩子,当某一个事件发生时,其它程序会触发并对其作出相关反应,通过signal回调处理函数(receivers),从而更大程度的解耦我们的项目
1 from django.shortcuts import render 2 from django.http import httpresponse 3 from django.core.signals import request_finished,request_started,got_request_exception 4 from django.dispatch import receiver 5 from django.dispatch.dispatcher import signal 6 from django.db.models import signals 7 from django.db.models.signals import pre_save,pre_delete 8 from django.db.models.base import model 9 import django.dispatch 10 from app.models import somemodel
django内置信号
1 @receiver(request_started) 2 def requeststarted(sender,**kwargs): 3 print(sender,'这是request_started') 4 request_started.connect(requeststarted)#请求完成信号
一个receiver装饰器,里面第一个参数放信号的类型,第二个参数放附加参数,然后装饰信号激活时要触发的函数
1 @receiver(pre_save) #model保存信号 2 def presave(sender,**kwargs): 3 print(sender,'这是pre_save') 4 5 @receiver(pre_delete) #model删除信号 6 def predelete(sender,**kwargs): 7 print(sender,'这是pre_delete')
没有内置这种信号,用户可自定义,与内置信号使用的第一种方法相同
1 bus_comming = django.dispatch.signal(providing_args=['plate_numbers']) 2 3 def callback(sender,**kwargs): 4 print(sender,kwargs,'这是自定义信号') 5 6 bus_comming.connect(callback) 7 bus_comming.send(sender='lijingbo',plate_numbers=666)
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论