Токен Django не действителен

Я пытаюсь создать процесс для проверки электронной почты пользователя перед ее изменением. Однако токен продолжает считаться недействительным. Есть помощь?

Мнения:

def _send_verification_email(user=None,email=None,request=None):
    current_site = get_current_site(request)
    message = render_to_string('emails/email_verification.html', {
        'user': user,
        'domain': current_site.domain,
        'uid': urlsafe_base64_encode(force_bytes(user.pk)),
        'token': default_token_generator.make_token(user),
        'email':urlsafe_base64_encode(force_bytes(email)),
        'email_unencoded':email,
    })
    user.send_email(mail_subject='Verify your email address', message=message)
def verify_changed_email(request,uidb64=None,token=None,email=None):
    try:
        uid = urlsafe_base64_decode(uidb64).decode()
        user = Account.objects.get(pk=uid)
    except(TypeError, ValueError, OverflowError, Account.DoesNotExist):
        user = None
    if user is not None and default_token_generator.check_token(user, token):
        email = urlsafe_base64_decode(email).decode()
        user.email = email
        user.save()
        auth.login(request, user)
        messages.success(request, 'Your email has been changed.')
        return redirect('/')
    else:
        messages.error(request, 'An error has occurred. This link is not valid.')
        return redirect('/')

Проверка формы, это работает.

        if form.is_valid() and account_settings_form.is_valid():
            self.object = form.save()

            try:
                user = Account.objects.get(id=self.request.user.id)
                if account_settings_form.instance.email != user.email:
                    _send_verification_email(email=account_settings_form.instance.email, user=user, request=self.request)
                    account_settings_form.instance.email = user.email
                    messages.success(self.request,'We sent you an e-mail for further verification!')
                account_settings_form.save()
            except ValueError as e:
                messages.error(self.request, e)
                return self.render_to_response(self.get_context_data(form=form))

URL в электронной почте, и urlpatterns

        http://{{domain}}{% url 'accounts:verify_changed_email' uidb64=uid token=token email=email %}
    path('change-email/<uidb64>/<email>/<token>/',account_views.verify_changed_email,name='verify_changed_email'),

Он продолжает не проходить эту проверку, токен продолжает считаться недействительным:

    if user is not None and default_token_generator.check_token(user, token):

Есть идеи, почему он продолжает терпеть неудачу? Каким может быть решение? Похоже, что генератор токенов по умолчанию использует email для хэширования токена, но при проверке email еще не изменился. Я убедился в этом, передав объект Account из базы данных вместо запроса, а затем изменив email на старый email перед сохранением формы.

Вернуться на верх