django:使用无效表单刷新

时间:2015-12-08 15:27:09

标签: django forms submit refresh

问题是当使用无效表单刷新页面时(页面上显示错误)我得到"确认表单重新提交"提醒和打击' 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="">...

0 个答案:

没有答案