当页面刷新发布请求时,表单重新提交。 我在发布请求后尝试重定向。但是,当请求有上下文时,它不起作用。这个上下文有form.errors,因为login.html显示表单错误。 如何解决这个问题? (没有消息框架)
def do_login(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
password = form.cleaned_data['password']
user = authenticate(email=email, password=password)
if user is not None:
login(request, user)
return redirect(reverse('root'))
else:
pass
# redirect cannot pass context, right?
else:
form = LoginForm()
context = {
'form': form
}
return render(request, 'accounts/login.html', context=context)
答案 0 :(得分:2)
您的代码使用的是标准方法。您是在成功发布请求后重定向,但不是在不成功的帖子后重定向。这样可以使表单显示错误。
如果用户在发布不成功后刷新,则浏览器通常会警告用户他们的数据将被重新提交。如果他们确实重新提交,那么这并不重要,登录将再次失败,他们将看到与以前相同的错误。