Django2.2:无JS确认表单的最佳方法

时间:2019-04-22 13:18:14

标签: python django

我要实现此算法:

  1. 用户提交模型表格
  2. 如果clean()方法引发错误,我不想再次显示表单。我希望用户看到带有“确认”和“取消”按钮的确认页面。

例如

  

同名书籍已经存在。

     

您要再保存一本以此名称命名的书吗?

     

是/取消

在这种情况下最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

在视图中调用is_valid()时,将调用clean()方法。因此,您认为应该有以下内容:

if not my_form.is_valid():
    return render(request, 'confirmation_page_template.html', {})

答案 1 :(得分:0)

如果您使用的是class-based views,则应根据docs覆盖方法form_invalid

  

form_invalid(form)

     

呈现响应,提供无效的表单作为上下文。

通常,此方法返回到显示表单错误的同一视图,您可以使用任何其他视图,并且如果您愿意,使用失败的表单可以使message用户遇到错误。

但是...

您应该考虑提供确认无效表格的选项,而不应该为用户提供确认错误数据的选项。