Как в форме регистрации сделать поле для шестизначного кода, который пришёл на почту(подтвердить эмеил)? Написал код, который генерирует и сохраняет в базе данных шестизначный код, привязанный к пользователю. Так вот как реализовать подтверждение почты по этому коду? (В табличке юезров сделал флаг, который при успешном подтверждении ставится в True)
views.py
class RegistrationUserView(CreateView):
template_name = 'users/registration.html'
form_class = RegistrationUserForm
def form_valid(self, form):
user = form.save()
login(self.request, user)
return redirect('homepage')
forms.py
class RegistrationUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
def save(self, commit=True):
user = super(RegistrationUserForm, self).save(commit=True)
record = EmailVerification.objects.create(code=random.randint(100_000, 999_999), user=user)
record.send_verification_email()
return user
models.py
class User(AbstractUser):
is_verified_email = models.BooleanField(default=False)
class EmailVerification(models.Model):
code = models.CharField(max_length=6, unique=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'EmailVerification for {self.user.email}'
def send_verification_email(self):
send_mail(
'Subject here',
f'Verification code: {self.code}',
'from@example.com',
[self.user.email],
fail_silently=False,
)