信号量最为Django的一个核心知识点,在项目中不多有使用到,因此不少人都不了解或者没听过过(包括我)。简单来讲就是在进行一些操做的先后咱们能够发出一个信号来得到特定的操做,这些操做包括(信息来自:https://yiyibooks.cn/xx/Djang...:html
在模型 save()方法调用以前或以后发送。django
在模型delete()方法或查询集的delete() 方法调用以前或以后发送。app
模型上的 ManyToManyField 修改时发送。post
Django开始或完成HTTP请求时发送。spa
其余细致的知识点,你们能够点连接查看,直接经过一个例子解释:code
users/signals.pyhtm
from django.db.models.signals import post_save from django.dispatch import receiver from django.contrib.auth import get_user_model User = get_user_model() # post_save:上面七大方法之一:在模型保存以后的操做 # sender: 发出信号的model @receiver(post_save, sender=User) def create_user(sender, instance=None, created=False, **kwargs): """ sender:模型类。 instance:保存的实际实例。 created:若是建立了新记录True。 update_fields:Model.save()要更新的字段集,若是没有传递则为None """ if created: password = instance.password # instance至关于user instance.set_password(password) instance.save()
users/apps.pyget
from django.apps import AppConfig class UsersConfig(AppConfig): name = 'users' verbose_name = '用户管理' def ready(self): """使用ready加载,不然不生效""" import users.signals