django的某些操作发生时,会发出signals,可以截获signals,并进行一些操作
下面代码是在创建新用户完成时,截获signals,把保存的明文密码修改为密文
此app下创建signals.py 文件
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()
@receiver(post_save,sender=User)
def create_user(sender, instance=None, created=False, **kwargs):
if created:
password= instance.password
instance.set_password(password)
instance.save()
最后,在apps.py中导入接收函数,完成
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
verbose_name = '用户中心'
def ready(self):
import users.signals
可能信号量不生效 是因为settings配置问题
INSTALLED_APPS = [
'users',
修改为 这样就会加载 def ready(self): 函数 信号量才会生效
INSTALLED_APPS = [
'users.apps.UsersConfig',