我的登录表单(即自定义登录表单)存在问题,并且我们遇到的问题是,当我登录时,它卡在了处理请求中,如果我单击两次登录,则会收到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。从错误页面返回并再次输入凭据后,登录工作正常。但是,在第一次运行时,登录会卡在处理请求中。
谢谢!
编辑:这些是事件的确切顺序:
所有选项卡已关闭,用户未登录任何地方,服务器未在任何地方运行。
服务器开始运行,并且用户进入登录页面127.0.0.1:8000(在网站的主页上是登录页面)
用户输入用户名和密码
Chrome停留在“处理请求...”上
用户再次单击登录按钮
Django错误页面'弹出禁止的403'
用户单击后退按钮
用户再次输入凭据
用户现在可以成功登录
这些是逐步解决此问题的方法,我将不胜感激!