Python全系列 教程
3567个小节阅读:5930k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Django有一个“信号调度器(signal dispatcher)”,当框架中的其他地方发生操作时,它可以通知一些解耦的应用程序
官网:https://docs.djangoproject.com/zh-hans/4.1/topics/signals/
xxxxxxxxxx
def my_callback(sender, **kwargs):
print("Request finished!")
该函数接收一个 sender
参数以及关键字参数 (**kwargs
);所有信号处理程序都必须接受这些参数
方法1:使用django.core.signals
里面的事件进行链接
xxxxxxxxxx
from django.core.signals import request_finished
# dispatch_uid 为了防止重复信号,给一个唯一的字符串即可,一般是信号名+接口函数
request_finished.connect(my_callback, dispatch_uid="my_unique_identifier")
方法2:使用装饰器django.dispatch.receiver(signal,**kwargs)
xxxxxxxxxx
from django.core.signals import request_finished
from django.dispatch import receiver
@receiver(request_finished)
def my_callback(sender, **kwargs):
print("Request finished!")
我的代码该放在哪?
严格来说,信号处理和注册的代码可以放在任何你喜欢的地方,但是推荐避免放在应用程序的根目录和
models
模块内以尽量减少导入代码的副作用。
实时效果反馈
1. 关于Django信号,说法错误的是?
A 信号是可以帮助解耦应用
B 信号触发后,需要链接接收器函数
C 信号触发后,处理的业务逻辑需要自己定义
D 链接接收器函数的方式只能使用函数方式
答案
1=>D