Я пишу код для регистрации пользователя.В моей функции «регистрация (запрос)», прежде чем я проверю электронную почту, я сохраняю пользователя, и он сохраняется в базе данных, но он не активен.Затем я использую этого пользователя, чтобы активировать его в своей функции «активировать (запрос)», и я активирую пользователя.Но есть проблема, если пользователь введет неправильный или не адрес электронной почты, он будет сохранен в базе данных, и это может занять бесполезное пространство памяти в базе данных.И другая проблема заключается в том, что если пользователь захочет исправить свою информацию на странице регистрации, он не сможет этого сделать, поскольку его имя пользователя и адрес электронной почты уже существуют в базе данных.
РЕДАКТИРОВАТЬ Сказать, что он вводит неправильный адрес электронной почты, - это в том случае, если он указал username@gmail.com вместо user_name@gmail.com.Адрес электронной почты введен в хорошем формате, но это не его адрес
def register(request):
registered = False
if request.method == 'POST':
form = UserForm(data=request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False
user.save()
current_site = get_current_site(request)
mail_subject = 'Activez votre compte acquisitor.'
message = render_to_string('users/acc_active_email.html',{
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(),
'token': account_activation_token.make_token(user),
})
to_email = form.cleaned_data.get('email')
email = EmailMessage(
mail_subject, message, to=[to_email]
)
email.send()
return render(request, 'users/mail_registration.html')
else:
print(form.errors)
else:
form = UserForm()
return render(request, 'users/registration.html', {'user_form': form,
'registered': registered})
def activate(request, uidb64, token, backend='django.contrib.auth.backends.ModelBackend'):
try:
uid = force_text(urlsafe_base64_decode(uidb64))
user = User.objects.get(pk=uid)
except(TypeError, ValueError, OverflowError, User.DoesNotExist):
user = None
if user is not None and account_activation_token.check_token(user, token):
user.is_active = True
registered = True
user.save()
login(request, user, backend)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse("Lien d'activation invalide")