Django如何在提交失败时将AJAX加载的表单重定向到先前的状态

时间:2019-07-17 12:53:08

标签: django ajax

我有一个模板A.html,其中包含一个处理AJAX请求的链接,转到一个视图,然后将B.html中的表单加载到A.html中指定的div中,该表单以AJAX成功返回。现在,我有一种观点认为,在表单提交过程中,将表单移交给forms.py并清除该表单并引发验证错误。如果要保留A.html的先前状态,应在哪里重定向视图? Workflow of my project

PS:这可能是一个错误的设计。但是我是Django的初学者,并且已经读过要不根据某些字段的选择而刷新页面,我们需要使用AJAX调用。现在,字段F1和F2确定将在div中加载的内容。所以我用了AJAX调用。

2 个答案:

答案 0 :(得分:0)

编辑:好的,现在我将尽力帮助您。

有两种方法可以解决此问题。

第一个(我个人更喜欢)将包括通过AJAX调用验证View 2表单。为此,您必须在要提交表单时执行一个函数。 (如果您不知道如何操作,请查看此帖子:Form Submit Execute JavaScript Best Practice?)。然后,AJAX响应将是一个表单错误列表,如果没有错误,则AJAX成功函数将重定向到A.html,否则该函数将使用jQuery设置错误并等待另一表单提交。

第二个方法是,如果form.is_valid()返回False,则在视图发布函数中使用已经包含B.html的A.html进行渲染。在这种情况下,B.html表单将是经过验证的表单,并且其中将包含适当的错误。另一方面,如果form.is_valid()返回True,则可以直接重定向到A.html。

我知道这可能很难第一次实现,所以请考虑一下,如果您需要额外的代码帮助,我很乐意再次编辑该消息。

答案 1 :(得分:0)

您是否想将REST api驱动的ajax调用放到Django视图并在客户端渲染?