Учетная запись не была активна после того, как я подтвердил свою электронную почту в django

#python-3.x #django #email-verification

#python-3.x #django #проверка электронной почты

Вопрос:

Я написал некоторый код в django о регистрации с помощью электронного письма с подтверждением, и электронное письмо было отправлено мне, и я подтвердил это, но мой аккаунт не активировался. Я не знаю, связана ли проблема с моей функцией активации или с какой ошибкой я получаю : введите описание изображения здесь

и это моя функция активации:

 def activate(request, uidb64, token):
    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 acc_activation.check_token(user, token):
        user.is_active = True
        user.save()
        login(request, user)
        # return redirect('home')
        return HttpResponse('Thank you for your email confirmation. Now you can login your account.')
    else:
        return HttpResponse('Activation link is invalid!')
  

и мой activation_email.html код :

     {% autoescape off %}
Hi {{ user.username }},
pleace click here to confirm your registration,
http://{{ domain }}{% url 'activate' uidb64=uid token=token %}
{% endautoescape %}
  

Ответ №1:

Добавьте user.profile.email_confirmed = True в свою логику.

     if user is not None and acc_activation.check_token(user, token):
        user.is_active = True
        user.profile.email_confirmed = True
        user.save()
        login(request, user)
        # return redirect('home')
        return HttpResponse('Thank you for your email confirmation. Now you can login your account.')