Django Rest framework Сменить пароль - PullRequest
0 голосов
/ 14 ноября 2018

// models.py

class UserManager(BaseUserManager):
    def create_user(self, email, name, password=None):
        if email is None:
            raise TypeError('email is empty')

        user = self.model(email=email, name=name)
        user.set_password(password)
        user.save(using= self.db)

        return user


class UserProfile(AbstractBaseUser, PermissionMixin):
    email = models.EmailField(unique=True)
    name = models.CharField(max_length=500)
    password = models.CharField(max_length=300)
    is_staff = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name']

    objects = UserManager()

// views.py

class UserAPIView(viewsets.ModelViewSet):

    permission_classes = (IsOwnerOrReadOnly,)
    serializer_class = RegistrationSerializer
    queryset = UserProfile.objects.all()

    def post(self, request):
        user = request.data.get('user', {})
        serializer = self.serializer_class(data=user)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return Response(serializer.data,status=status.HTTP_201_CREATED)

// serializers.py

class RegistrationSerializer(serializers.ModelSerializer):
    class Meta:
        extra_kwargs = { 'password' : { 'write_only' : True }}
        model = UserProfile
        fields = ('id','email','name','password','is_staff')

    def create(self, validated_data):
        return UserProfile.objects.create_user(**validated_data)

Это часть моего приложения. Мне нужно установить функцию patch() или update() в этом приложении, чтобы оно правильно обновляло поле password, т. Е. Поле password должно быть хэшировано с помощью set_password ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...