User Password is not Encrypted Django with Rest Framework

When I create a user password remains in plain text. Also Im using signals to create user profiles related to users. Though I use the set_password method passwords are not encrypting.

Serializer.py


class UserSerializerAPI(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username','email','password','is_teacher']
        extra_kwargs = {"password":{"write_only":True}}

        def create(self,validated_data):
            username = validated_data['username']
            email = validated_data['email']
            password = validated_data['password']
            user_obj = User(
                username = username,
                email = email
            )
            user_obj.set_password(password)
            user_obj.save()
            return user_obj

views.py

class createuser(CreateAPIView):
    serializer_class = UserSerializerAPI
    queryset = MyUser.objects.all()

Upvotes: 2

Views: 1201

Answers (1)

deniz cihan tiryaki
deniz cihan tiryaki

Reputation: 116

you can code like this`

class RegisterSerializer(serializers.ModelSerializer):
      password1 = serializers.CharField(write_only=True)

      class Meta:
          model = User
          fields = ('username', 'email', 'password','password1',  'is_teacher',)

      def validate(self, attr):
        validate_password(attr['password'])
        return attr

      def create(self, validated_data):
          user = User.objects.create( # this line  will solve your problem
              username=validated_data['username'],
              is_teacher=validated_data['user_type'],
              email=validated_data['email'],
            )
          user.set_password(validated_data['password']) 
          user.save()



          return user

Best Regards

Upvotes: 2

Related Questions