Мое приложение имеет активацию по электронной почте. Однако ссылка активации не срабатывает, когда пользователь создает учетную запись в одном браузере и пытается проверить ссылку из другого браузера. Сообщение об ошибке «Ссылка активации недействительна».
Обычно это работает, когда пользователь пытается использовать ссылку активации в том же браузере. Тем не менее, иногда это по-прежнему не удается, и я все еще получаю «Активация ссылка недействительна». По сути, я не знаю, почему иногда это происходит не так, а с другими.
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.