问题是当使用无效表单刷新页面时(页面上显示错误)我得到"确认表单重新提交"提醒和打击' ok'我最终得到了同样的错误表单。这种行为对我来说似乎有点奇怪,我想我应该得到一个空的形式。
如果表单已提交(通过按提交按钮),我会收到POST请求并在我的视图函数中处理该POST请求。我确实检查了我的表格的有效性。如果它是有效的我HttpResponseRedirect到成功页面,如果没有,我用该无效表单回复(为了不松散用户数据并在页面上显示错误)。这是视图函数的预期行为(至少对我而言)。 但问题是刷新也会触发" POST请求。这很奇怪,如果有人能解释为什么刷新触发器发出警报并发送POST请求,我会感激不尽。我是网络新手,渴望了解幕后的情况。 因此,在我的视图函数中,我得到的POST与我使用的相同,以及使用"提交按钮"好吧,对吗?我无法区分"无论是提交还是刷新?我已经针对两种情况转发了请求dict,这些都是相同的。
我在这里失踪了什么?我已经做了很多搜索,但无法得到任何答案。几乎在每种情况下,我都会得到一个有效表格的案例,建议使用HttpResponseRedirect,好吧,但如果表格无效怎么办?用户输入了一些无效数据,然后他/她决定以新的空表格开始。现在唯一的方法是点击网址并按Enter键。他/她能刷新吗?
非常感谢您的回答。 问候, 卡伦
P.S。这是代码:
class TireFormView(FormView):
template_name = 'tire_form.html'
form_class = TireForm
success_url = '/tires/tire/thanks'
initial = {'make': MAKE_CHOICES[0][1]}
def get(self, request, *args, **kwargs):
form = self.form_class(request=request, initial=self.initial)
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST, request = request)
if form.is_valid():
return HttpResponseRedirect(self.success_url)
return render(request, self.template_name, {'form': form})
HTML
...<form action="">...