in Reat-api I wanna make a method in my UserView to be abel to register new user using customized user model, and I got this error in Postman
"detail": "Method \"POST\" not allowed."
views.py
class UserView(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializers
# authentication_classes = (TokenAuthentication,)
# permission_classes = (IsAuthenticated,)
@action(detail=True, methods=["POST"])
def register_user(self, request):
serializer = UserSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_404_NOT_FOUND)
serializer.py
class UserSerializers(ModelSerializer):
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
Token.objects.create(user=user)
return user
class Meta:
model = User
fields = "__all__"
# exclude the 'password' field from the serialization
extra_kwargs = {"password": {"write_only": True}}
models.py
class UserManager(BaseUserManager):
"""Manage Users"""
def create_user(self, email, password=None, **extra_fields):
"""Create save and return new User"""
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
user = self.create_user(email, password, **extra_fields)
user.set_password(password)
user.is_superuser = True
user.is_staff = True
user.save(using=self._db)
return user
class User(AbstractUser, PermissionsMixin):
"""Customize built-in User model, so it will require an email"""
email = models.EmailField(null=False, blank=False, unique=True)
first_name = models.CharField(null=False, blank=False, max_length=200)
last_name = models.CharField(null=False, blank=False, max_length=200)
objects = UserManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
I am a little bit confused here, is ModelViewSet has built-in register user method , or should I write method for it