Проблема с отображением предупреждений после неудачного входа в систему

Я создаю сайт в качестве своего последнего проекта и хочу вывести сообщение для пользователей, которые не смогли войти в систему более 3 раз, предлагая им сбросить свой пароль.

Я уже пробовал различные решения, которые нашел в Интернете, но ничего не помогает.

Я пишу бэкенд на Django, но Django-axes также не работал для меня, поэтому я пробую JS сейчас.

<script type="text/javascript">
    var login_attempts = 3;
    function checkAttempts()
    {
        var failed_alert = document.querySelectorAll("a")[0].textContent;

        if (failed_alert === " Invalid username or password ") {
            login_attempts--;
            console.log(login_attempts);
            alert('failed login')

            if (login_attempts==0)
            {
                alert("Do you want to reset your password?");
            }
        } else {
            console.log(login_attempts);
            return false;
        }
    }
</script> 

Этот пример я нашел на Stack Overflow. Мне кажется, я близок к решению этой проблемы, я получаю сообщения, но при печати "login_attemps" в консоли сначала получаю 3, а потом постоянно 2, сколько бы раз я не писал неправильный пароль.

Функция вызывается в форме. Я также пытался сделать это в body onload="""

<form id="login-form" class="form" action="login" method="post" onsubmit="checkAttempts();">

Вся аутентификация реализована в views.py django:

def login(request):
    if request.user.is_authenticated:
        return redirect('/')
    else:
        if request.method == 'POST':
            username = request.POST['username']
            password = request.POST['password']

            user = auth.authenticate(username=username, password=password)

            if user is not None:
                auth.login(request, user)
                return HttpResponseRedirect(request.GET.get('next', LOGIN_REDIRECT_URL))
            else:
                messages.info(request, 'Invalid username or password')
                return redirect('login.html')
        else:
            return render(request, 'login.html')

Я чувствую, что теряю свои идеи. Я пытался решить эту проблему в течение 2 недель безрезультатно. Если у кого-то есть идеи, буду благодарен. Это может быть как на js, так и на django.

Я бы ожидал чего-то вроде

document.getElementById('login-form').addEventListener('submit', function(e) {
  e.preventDefault();
  fetch('login', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        'username': this.username.value,
        'password': this.password.value
      })
    })
    .then((response) => response.json())
    .then((data) => {
      console.log('Success:', data); // here we are logged in
    })
    .catch((error) => {
      console.error('Error:', error);
    });
});
Вернуться на верх