django 信号用法

用最简单明确的方式说明一下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表添加一条用户数据,即可在控制后台看到信号处理函数的输出,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值