3

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

由于表单未验证,表单图像字段被清除,即用户必须再次输入图像字段。我不希望这种情况发生。我希望图像字段包含用户输入的相同值。是否有可能做到这一点 ?

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

4

2 回答 2

3

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

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

这样,您只有在表单已经过验证后才会将表单提交给 Django,因此只要您的客户端验证可靠,您就不会遇到此问题。

于 2013-10-30T07:34:45.710 回答
2

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

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

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

于 2013-10-30T07:40:58.107 回答