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...