用最简单明确的方式说明一下django 信号的用法:我用的是django 1.11,1.8已上的应该都可以,但不一定,没尝试过
1、新建一个项目和应用,并在项目配置文件中注册新建的应用;这一步应该没啥可说的
2、在应用目录下新建一个文件,名字:signal.py,并写下下面的代码:
from django.contrib.auth.models import User # 导入django自带的用户表,同步数据库时自动生成,无需配置和编写任何代码
from django.db.models.signals import post_save # 导入django支持的信号,该信号表示数据库保存动作,也就是save 或者 create 动作,具体可查看相关文件
from django.dispatch import receiver # 导入django信号绑定装饰函数,定义好的信号及信号处理函数需要绑定
@receiver(post_save, sender=User) # post_save 参数表示信号处理函数处理的信号类型:数据库保存动作; sender表示信号发送者,未指定即全部
def my_save(sender, **kwargs): # my_save为信号处理函数,参数按固定写法即可,通过打印参数可查看参数究竟是什么
print u"保存后........."
print sender
print kwargs
3、定义并绑定完信号处理函数后:在应用下的apps.py 文件中,添加下面代码:
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self): # 新添加代码:注册刚定义的信号处理文件
from my_app import signal
4、在应用目录下的__init__.py 文件中写入代码:
default_app_config = 'my_app.apps.MyAppConfig'
5、准备完毕,启动服务进入admin系统,向User表添加一条用户数据,即可在控制后台看到信号处理函数的输出,