Неверный формат пароля или неизвестный алгоритм хеширования. в django rest-framework - PullRequest
1 голос
/ 07 августа 2020

После сохранения поля пароля пользователя приложение показывает Неверный формат пароля или неизвестный алгоритм хеширования .

Пользователь создан, но поле пароля Неверный формат пароля или неизвестный алгоритм хеширования .

Код не возвращает никаких ошибок во время регистрации.

Я также пробовал user.set_unusable_password() в сериализаторе, но с тем же результатом. Не могу понять.

Serializers.py

from rest_framework import serializers
from accounts.models import User

class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'phone' , 'password',)
        write_only_fields = ('password',)

        def create(self, validated_data):
            user = User.objects.create(**validated_data)
            user.set_password(validated_data['password'])
            user.save()
            return user

        })

view.py



class Register(APIView):

    def post(self, request, *args, **kwargs):
        phone = request.data.get('phone', False)
        password = request.data.get('password', False)
        print(phone)
        print(password)
        if phone and password:
            old = PhoneOTP.objects.filter(phone__iexact=phone)
            if old.exists():
                old = old.first()
                validated = old.validate
                if validated:
                    temp_data = {
                        'phone': phone,
                        'password': password
                    }
                    serializers = CreateUserSerializer(data=temp_data)
                    serializers.is_valid(raise_exception=True)
                    user = serializers.save()

                    old.delete()
                    return Response({
                        'status': True,
                        'detail': 'Account is  created '
                    })


1 Ответ

1 голос
/ 13 августа 2020

serializers.py

class UserRegistrationSerializer(serializers.ModelSerializer):

    profile = ProfileSerializer(required=False)

    class Meta:
        model = User
        fields = ('phone', 'username', 'password', 'profile')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        profile_data = validated_data.pop('profile')
        user = User.objects.create_user(**validated_data)
        users = Profile.objects.create(
            user=user,      
            state=profile_data['state'],
            city=profile_data['city'],
            date_Of_Birth=profile_data['date_Of_Birth'],
            address=profile_data['address']
             )
        users.save()
        
        return users

views.py

class UserRegistrationView(CreateAPIView):

    serializer_class = UserRegistrationSerializer
    permission_classes = (IsAuthenticated,)

    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        response = {
            'success' : 'True',
            'status code' : status.HTTP_200_OK,
            'message': 'User registered  successfully',
            }
        status_code = status.HTTP_200_OK
        return Response(response, status=status_code)

Надеюсь, ответ пригодится.

...