Django 403错误csrf_token即使表单包含它也不正确

时间:2020-03-21 19:24:39

标签: python django django-forms django-views django-templates

我的登录表单(即自定义登录表单)存在问题,并且我们遇到的问题是,当我登录时,它卡在了处理请求中,如果我单击两次登录,则会收到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。从错误页面返回并再次输入凭据后,登录工作正常。但是,在第一次运行时,登录会卡在处理请求中。

谢谢!

编辑:这些是事件的确切顺序:

  1. 所有选项卡已关闭,用户未登录任何地方,服务器未在任何地方运行。

  2. 服务器开始运行,并且用户进入登录页面127.0.0.1:8000(在网站的主页上是登录页面)

  3. 用户输入用户名和密码

  4. Chrome停留在“处理请求...”上

  5. 用户再次单击登录按钮

  6. Django错误页面'弹出禁止的403'

  7. 用户单击后退按钮

  8. 用户再次输入凭据

  9. 用户现在可以成功登录

这些是逐步解决此问题的方法,我将不胜感激!

0 个答案:

没有答案