【问题标题】:Invalid password format or unknown hashing algorithm. in django rest-framework无效的密码格式或未知的散列算法。在 django 休息框架中
【发布时间】:2020-11-27 20:16:03
【问题描述】:

保存用户密码字段后,应用显示密码格式无效未知哈希算法

用户已创建,但密码字段是无效密码格式未知散列算法

代码在注册过程中不会返回任何错误。

我还在序列化程序中尝试了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 '
                    })


【问题讨论】:

    标签: python python-3.x django django-rest-framework


    【解决方案1】:

    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)
    

    希望答案有用。

    【讨论】:

      猜你喜欢
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 2017-07-04
      • 2014-07-06
      • 2013-01-09
      • 2015-06-02
      相关资源
      最近更新 更多