信號量最爲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