Создайте одноразовый код и определенное время [закрыто]

Я хочу сгенерировать случайный код для регистрации пользователя на сайте И время использования случайного кода составляет 3 минуты

мой класс:

class Otp(models.Model):
    token = models.CharField(max_length=200, null=True)
    phone_number = models.CharField(max_length=11)
    code = models.SmallIntegerField()
    expiration_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.phone_number

Мое мнение:

class CheckOtpView(View):
    def get(self, request):
        form = CheckOtp()
        return render(request, 'userlogin/verify-phone-number.html', {'register': form})

    def post(self, request):
        token = request.GET.get('token')
        form = CheckOtp(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            if Otp.objects.filter(code=cd['code'], token=token).exists():
                otp = Otp.objects.get(token=token)
                user, is_create = User.objects.get_or_create(phone=otp.phone_number)
                login(request, user)
                otp.delete()
                next_page = request.GET.get('next')
                if next_page:
                    return redirect(next_page)
                return redirect('userlogin:welcome')

        return render(request, 'userlogin/verify-phone-number.html', {'register': form})

Моя форма:

class CheckOtp(forms.Form):
    code = forms.CharField(widget=forms.TextInput(attrs={'class': 'number-email-input'}),
                           validators=[validators.MaxLengthValidator(5), validators.MinLengthValidator(5)])
Вернуться на верх