首页 > 解决方案 > 表单无效时Django不刷新站点

问题描述

我目前正在开发一个网站,我在其中使用了很多带有表单的模态。问题是,每次我在表单字段中输入无效信息并按下提交按钮时,模式都会关闭,并且没有迹象表明表单无效。

我已经知道有可能发出一个 ajax 请求,它将表单数据发送到另一个视图,然后响应一个 JSONResponse,其中包含可以显示的错误(如本文所示:https ://realpython.com/ django-and-ajax-form-submissions/)。那会起作用,但是这样做我会失去 django 表单的所有好处。因为我必须以 JSON 格式提交表单数据,所以我不能使用 form.is_valid 之类的函数。

所以我的问题是:有没有办法在提交无效表单并显示错误时不刷新网站而无需通过 JSON 发送数据?

标签: pythonjsondjangoforms

解决方案


当您提交 HTML 表单时,浏览器会将您导航到您在该表单的action属性中指定的 URL。如果不导航到actionURL,就无法实现 HTML 表单提交。

因此,您唯一的选择是 AJAX 请求。

因为我必须以 JSON 格式提交表单数据,所以我不能使用 form.is_valid 之类的函数。

这不是真的,您form.is_valid在后端调用,HTML 表单和 AJAX 都向您的后端发送 HTTP 请求。


推荐阅读