Django信号
2018-09-18 06:43:48来源:博客园 阅读 ()
django——signal
其实可以理解为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)#请求完成信号
- 内置信号触发方式
- 先定义信号激活时要触发的函数,然后用 信号类型名.connect(函数名),即可达到与第二种装饰器方法相同的效果
-
一个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)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- Django基本知识 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
- django框架使用及创建项目 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash