@hatman

Почему создаются битые записи в базе user?

Делаю AJAX регистрацию. Столкнулся с ситуацией, что в юзер id пользователей скачет (100, 112, 113, 124) итд. Юзер ID, которых нет - отдают ошибку 500.

Сначала выявил ошибку с csrf токеном, если юзер перезагружал страницу (убрал проверку на токен), затем были ошибки при скликивании (юзер несколько раз нажимал создать аккаунт - поставил проверку на существующего юзера). Все равно идут 500 ошибки.

В чем может быть дело?

@csrf_exempt
def registration(request):
    if request.POST:
        username = request.POST.get('username', '')
        email = request.POST.get('email', '')
        try:
            User.objects.get(email=email)
            json = {
                "error_login": "Такой пользователь уже существует<br>Перезагрузите страницу, возможно вы уже вошли",
                    }
            return JsonResponse(json, safe=False,)
        except User.DoesNotExist:
            password1 = request.POST.get('password1', '')
            password2 = request.POST.get('password2', '')
            if str(request.POST.get('checkox', '')) == "18": // проверка капчей на число от простых ботов
                if password1 == password2:
                    User.objects.create_user(username=username, email=email, password=password1)
                    newuser = auth.authenticate(username=username, password=password1)
                    auth.login(request, newuser)

                    # Созданием one-to-one модель Profile и привязываем её к модели User
                    current_user = request.user
                    profile_obj = Profile(user_id=current_user.id)
                    profile_obj.save()

                    json = {
                        "reload": "reload",
                            }
                    return JsonResponse(json, safe=False,)

                else:
                    json = {
                        'error_login': "пароли не совпадают",
                            }
                    return JsonResponse(json, safe=False,)
            else:
                json = {
                    'error_login': "неверная валидация поля",
                        }
            return JsonResponse(json, safe=False,)

    else:
        json = {
                'error_login': "произошла ошибка сервера",
                    }
        return JsonResponse(json, safe=False,)
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы