Django 403 Ошибка csrf_token неверна, даже если форма содержит его - PullRequest
0 голосов
/ 21 марта 2020

У меня есть проблема с моей формой входа в систему, которая является пользовательской формой входа, и проблема в том, что когда я вхожу в систему, она застревает при обработке запросов, и если я дважды нажимаю на кнопку входа в систему, я получаю сообщение об ошибке 403 о том, что csrf_token отсутствует, однако У меня есть это.

Это моя форма входа в систему:

      <form method="POST" action="{% url 'main:user_login' %}" class="form-signin">
        {% csrf_token %}
        <div class="form-label-group">
          <input type="text" name="username" id="inputText" class="form-control" placeholder="Username" required autofocus>
          <br/>
        </div>
        <div class="form-label-group">
         <input type="password"  name="password" id="inputPassword" class="form-control" placeholder="Password" required>   
        </div>
        <div class="custom-control custom-checkbox mb-3">
          <input type="checkbox" class="custom-control-input" id="customCheck1">
          <label class="custom-control-label" for="customCheck1">Remember password</label>
        </div>
        <input type="submit" class="form-control" name="" value="Login">
        <hr class="my-4">
        <p>Don't have account? <a href="{% url 'main:signup' %}" id="signup">Sign up here</a></p>
        <a href="{% url 'password_reset' %}" id="signup">Forgot Password</a>
        {% if form.errors %}
        <p style="color: red;">Sorry, the username or password you entered is incorrect please try again</p>
        {% endif %}
      </form>

Это мой вид входа в систему:

def user_login(request):
    if request.method == 'POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            user = form.get_user()
            login(request, user)
            return redirect('home:home')
    else:
        form = AuthenticationForm()
    return render(request, 'main/user_login.html', context={'form': form})

Я не могу понять, почему это происходит, это из-за моей ошибки в форме или моего входа в систему? Я использую пользовательскую модель пользователя, и я уже установил ее в Auth.user в настройках. Вход в систему работает нормально после того, как я go вернулся со страницы ошибок и снова ввел учетные данные. Однако при первом запуске вход в систему застревает при обработке запроса.

Заранее спасибо!

РЕДАКТИРОВАТЬ: Это точная последовательность событий:

  1. Все вкладки закрыты, пользователь нигде не вошел, сервер нигде не работает.

  2. Сервер запускается, и пользователь переходит на 127.0.0.1:8000, который является страницей входа (В веб-сайт, главная страница - страница входа)

  3. Пользователь вводит имя пользователя и пароль

  4. Chrome застрял на 'запрос обработки .. . '

  5. Пользователь снова нажимает кнопку входа в систему

  6. Django Страница ошибки «Всплывающее окно запрещенного 403»

  7. Пользователь нажимает кнопку возврата

  8. Пользователь снова вводит учетные данные

  9. Теперь пользователь может успешно войти в систему

Это шаг за шагом, как эта проблема, я буду признателен за любую помощь!

...