信号量机制修改密码

  • 重载Serializer的create方法实现修改
def create(self, validated_data):
        user = super(UserRegSerializer, self).create(validated_data=validated_data)
        user.set_password(validated_data["password"])
        user.save()
        return user

  • 信号量机制实现
    我们的model对象进行操作的时候,会发出全局的信号。捕捉之后做出我们自己的操作
    1、新建文件users/signals.py
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token

from django.contrib.auth import get_user_model
User = get_user_model()


# 参数一接收哪种信号,参数二是接收哪个model的信号
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    # 是否新建,因为update的时候也会进行post_save
    if created:
        password = instance.password
        instance.set_password(password)
        instance.save()

2、重载配置

from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = "用户管理"

    def ready(self):
        import users.signals

猜你喜欢

转载自blog.csdn.net/qq_34374753/article/details/84252535
今日推荐