My model is following
class CustomUserManager(BaseUserManager):
"""This class base function for creating a Custom User model."""
def create_user(self, email, username, password=None):
if not email:
raise ValueError("The Email field must be set")
if not username:
raise ValueError("User must have a unique username.")
email = self.normalize_email(email)
user = self.model(email=email, username=username)
user.set_password(password)
user.save(using=self._db)
return user
class CustomUser(AbstractBaseUser, PermissionsMixin):
"""This class defines fields for CustomUser model."""
email = models.EmailField(unique=True)
username = models.CharField(verbose_name="username", max_length=255, unique=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
date_joined = models.DateTimeField(default=timezone.now)
is_active = models.BooleanField(default=True)
# Add your custom fields here as needed
objects = CustomUserManager()
USERNAME_FIELD = "username"
EMAIL_FIELD = "email"
REQUIRED_FIELDS = ["email"]
def __str__(self) -> str:
return self.username
def has_perm(self, perm, obj=None):
return self.is_superuser
def has_module_perms(self, app_label):
return True
My views.py file is following
serializer_class = CustomUserLoginSerializer
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(
data=request.data, context={"request": request}
)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data["user"]
token, created = Token.objects.get_or_create(user=user.pk)
return Response(
{"token": token.key, "user_email": user.email, "username": user.username},
status=status.HTTP_200_OK,
)