python - 表单无效时Django不刷新站点
问题描述
我目前正在开发一个网站,我在其中使用了很多带有表单的模态。问题是,每次我在表单字段中输入无效信息并按下提交按钮时,模式都会关闭,并且没有迹象表明表单无效。
我已经知道有可能发出一个 ajax 请求,它将表单数据发送到另一个视图,然后响应一个 JSONResponse,其中包含可以显示的错误(如本文所示:https ://realpython.com/ django-and-ajax-form-submissions/)。那会起作用,但是这样做我会失去 django 表单的所有好处。因为我必须以 JSON 格式提交表单数据,所以我不能使用 form.is_valid 之类的函数。
所以我的问题是:有没有办法在提交无效表单并显示错误时不刷新网站而无需通过 JSON 发送数据?
解决方案
当您提交 HTML 表单时,浏览器会将您导航到您在该表单的action
属性中指定的 URL。如果不导航到action
URL,就无法实现 HTML 表单提交。
因此,您唯一的选择是 AJAX 请求。
因为我必须以 JSON 格式提交表单数据,所以我不能使用 form.is_valid 之类的函数。
这不是真的,您form.is_valid
在后端调用,HTML 表单和 AJAX 都向您的后端发送 HTTP 请求。
推荐阅读
- swift - 尝试使用灯光节点创建战争迷雾时的灯光故障
- node.js - 如何在需要双向 TLS 的外部 REST API 的 ReactJS 请求中包含客户端证书
- r - R中的情绪数据集使用AFINN词典抛出错误
- c - 如何从文件重定向中获取命令?
- perl - 从 .txt 文件中删除多个已删除的变量
- python - 尝试绘制散点图时出现“ValueError:x 和 y 必须相同大小”的错误
- google-apps-script - 谷歌表格触发写入单元格
- java - 如何在简单的 api 调用中修复 Spring 5.1.5 中的“HttpMessageNotWritableException”异常
- python - 如何在列中为每个值附加时间片?
- excel - 使用数组时如何解决运行时错误 6