How to handle APIView for frontend, API working but unable to call it

24 Views Asked by At

I am a new developer so please excuse if you feel its some basic question. I have an APIview for otp verification Now I am unable to put it into forms as I have 4 register pages Please help in how to call it into frontend function. Its just email verification via otp api but don't know how to call it in front My codes are --

API View---

class RegisterAPI(APIView):
    def post(self, request):
        try: 
            data = request.data
            serializer = UserSerializer(data = data)
            if serializer.is_valid():
                serializer.save()
                send_OTP_via_email(serializer.data["email"])
                return Response({
                    "status" : 200,
                    "message" : "registration Successful check email",
                    "data" : serializer.data,   
                })
            return Response({
                "status" : 400,
                "message" : "something went wrong",
                "data" : serializer.errors

            })
        
        except Exception as e:
            print(e)

API View--


class VerifyOTP(APIView):
    def post(self, request):
        try:
            data = request.data
            serializer = VerifyAccountSerializer(data = data)
            if serializer.is_valid():
                email = serializer.data["email"]
                otp = serializer.data["otp"]

                user =  User.objects.filter(email = email)

                if not user.exists():

                    return Response({
                            "status" : 400,
                            "message" : "something went wrong",
                            "data" : "invalid email"

                    })
                if user[0].otp != otp:

                    return Response({
                            "status" : 400,
                            "message" : "something went wrong",
                            "data" : "Wrong OTP"

                        })
                user = user.first()
                user.is_verified = True
                user.save()



                return Response({
                    "status" : 200,
                    "message" : "Account Verified",
                    "data" : {},   
                })
            

        except Exception as e:
            print(e)

Signup view---

class StudentSignupView(CreateView):
    model = UserType
    form_class = StudentSignUpForm 
    template_name = "signup.html"


    def get_context_data(self, **kwargs):
        kwargs['user_type'] = 'student'
        return super().get_context_data(**kwargs)
    
    def form_valid(self, form):
        user = form.save()
        return redirect('login')

My models--

class User(AbstractUser):
    # username = None
    email = models.EmailField(_('email address'), unique = True)
    is_verified = models.BooleanField(default=False)
    otp = models.CharField(max_length=6, null=True, blank=False)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_student = models.BooleanField(default=False)
    is_Employer = models.BooleanField(default=False)
    is_Institution = models.BooleanField(default=False)
    is_Professional = models.BooleanField(default=False)
    is_Faculty = models.BooleanField(default=False)

    # USERNAME_FIELD = "email"
    REQUIRED_FIELDS = []
    objects = UserManager()

    def name(self):
        return self.first_name + " " + self.last_name
    
    def __str__(self):
        return self.email

Serializer --

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["email", "password", "is_verified"]


class VerifyAccountSerializer(serializers.Serializer):
    email = serializers.EmailField()
    otp = serializers.CharField()

Please point out where I am wrong Appreciate it Thanks...

0

There are 0 best solutions below