【问题标题】:How to prefill the image field on form validation error Django?如何在表单验证错误 Django 中预填充图像字段?
【发布时间】:2013-11-09 16:12:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-models


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-15
        • 2020-09-11
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        相关资源
        最近更新 更多