Ошибка активации электронной почты в Django в разных браузерах - PullRequest
0 голосов
/ 24 января 2020

Мое приложение имеет активацию по электронной почте. Однако ссылка активации не срабатывает, когда пользователь создает учетную запись в одном браузере и пытается проверить ссылку из другого браузера. Сообщение об ошибке «Ссылка активации недействительна».

Обычно это работает, когда пользователь пытается использовать ссылку активации в том же браузере. Тем не менее, иногда это по-прежнему не удается, и я все еще получаю «Активация ссылка недействительна». По сути, я не знаю, почему иногда это происходит не так, а с другими.

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):
    .... do something
else:
    return HttpResponse('Activation link is invalid!')

Здесь я создаю письмо:

def activation_email(request):
    if request.user.is_authenticated:
        user=request.user
        message = render_to_string('email.html', {
                'user':user,
                'token':account_activation_token.make_token(user),
                'uid':urlsafe_base64_encode(force_bytes(user.pk)),
        })
        ....send mail
    else:
        return redirect('somewhere_else')

По сути, Django не может распознать пользователя. Не уверен, почему иногда происходит сбой, я предполагаю, что это не так в операторе if user.is_authenticated.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...