如何在表单验证错误Django上预填充图像字段?

时间:2013-10-30 07:31:28

标签: django django-models

我有一个简单的Django表单,其中包含Image字段和其他一些字段。现在用户已输入表单字段并按下提交。由于某些错误,表单尚未验证。

作为未经验证的表格的结果,表格图像字段被清除,即用户必须再次进入图像字段。我不希望这种情况发生。我希望图像字段包含用户输入的相同值。有可能这样做吗?

注意:我已阅读并知道,无法预先填写此图像字段,因为它可能是一个很大的安全威胁。但我的一位技术客户坚持认为可以使用某种会话变量来完成。有可能吗?

2 个答案:

答案 0 :(得分:3)

使用JavaScript在客户端验证表单,并阻止提交,除非表单有效。这样,您就不会丢失现有内容,因为除非已经过验证,否则您的表单不会被提交。

假设您正在使用jQuery,您可以绑定到提交按钮的click事件,并使用preventDefault来停止默认行为。然后验证表单,并仅在表单有效时提交。

通过这种方式,只有在您的客户端验证可靠后才能将表单提交给Django,您不应该遇到此问题。

答案 1 :(得分:2)

要在视图中显示图像,需要将其保存到服务器,S3或用于静态/媒体文件的任何其他内容。

从JavaScript中,您可以将所选文件存储在localStorage中,并在表单错误上设置记住的所选路径。我不确定HTML5文件系统API是否允许这样做。见http://www.html5rocks.com/en/tutorials/file/filesystem/

正如Matthew Daly所说,进行客户端验证是最好的选择;其他任何事情都可能令人头痛。