Создайте одноразовый код и определенное время [закрыто]
Я хочу сгенерировать случайный код для регистрации пользователя на сайте И время использования случайного кода составляет 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)])