我有一个简单的Django表单,其中包含Image字段和其他一些字段。现在用户已输入表单字段并按下提交。由于某些错误,表单尚未验证。
作为未经验证的表格的结果,表格图像字段被清除,即用户必须再次进入图像字段。我不希望这种情况发生。我希望图像字段包含用户输入的相同值。有可能这样做吗?
注意:我已阅读并知道,无法预先填写此图像字段,因为它可能是一个很大的安全威胁。但我的一位技术客户坚持认为可以使用某种会话变量来完成。有可能吗?
答案 0 :(得分:3)
使用JavaScript在客户端验证表单,并阻止提交,除非表单有效。这样,您就不会丢失现有内容,因为除非已经过验证,否则您的表单不会被提交。
假设您正在使用jQuery,您可以绑定到提交按钮的click事件,并使用preventDefault来停止默认行为。然后验证表单,并仅在表单有效时提交。
通过这种方式,只有在您的客户端验证可靠后才能将表单提交给Django,您不应该遇到此问题。
答案 1 :(得分:2)
要在视图中显示图像,需要将其保存到服务器,S3或用于静态/媒体文件的任何其他内容。
从JavaScript中,您可以将所选文件存储在localStorage中,并在表单错误上设置记住的所选路径。我不确定HTML5文件系统API是否允许这样做。见http://www.html5rocks.com/en/tutorials/file/filesystem/
正如Matthew Daly所说,进行客户端验证是最好的选择;其他任何事情都可能令人头痛。