【问题标题】:What is the best way to deal with Django form validation involving FieldFile attachments?处理涉及 FieldFile 附件的 Django 表单验证的最佳方法是什么?
【发布时间】:2021-12-05 16:49:41
【问题描述】:

我目前有一个 Django 应用程序,并且正在使用内置的表单验证在用户提交时生成表单错误。一切正常。我的问题是我允许用户将文件附加到页面......如果表单验证失败,文件会消失,用户必须重新附加它们并且很可能会忘记,因为他们已经附加了一次。不是最佳的用户体验。我已经看到可以利用 Javascript 的地方,但这不是有点违背 Django 表单的目的吗?

提前感谢您的任何想法。

【问题讨论】:

  • 那么,您的问题是什么?您在寻找什么样的解决方案?出于安全原因,浏览器不允许文件输入来持久化文件,所以这是不可能的。使用 JavaScript 将为您提供最佳的用户体验解决方案。如果您不想使用 JS,可以将表单分为两步:第一步用于基于文本的输入,第二步用于文件输入(但设置起来会稍微复杂一些)。
  • @xyres 感谢您的回复。会考虑的。
  • 如果不想在 JS 中重写验证逻辑,可以使用 AJAX 提交表单,让 Django 进行验证。这可能是最简单和最好的解决方案。
  • 文件是大量资源,django 会在服务器端进行验证,因此如果验证失败,则会产生开销。您可以做的一件事是在前端使用 js 编写一些验证逻辑,然后如果通过,您可以将数据和文件传递给 django。我知道这有点乏味,但这是您可以实现的权衡结果。

标签: django django-models django-rest-framework django-views django-forms


【解决方案1】:

表单验证失败,文件消失,用户必须重新附加文件是什么意思??....

如果表单验证失败,您可以通过特定文件无效的消息在网页中引发错误。

表单无效的主要原因是因为你如何设置你的模型字段属性和视图......是的,确实 js、jQuery、ajax 有影响力,但如果你知道如何工作,就很容易使用。

如果您显示了一些代码或您所面临的错误,那就太好了。因此,社区成员可以毫无疑问地为您提供帮助。

因为有很多与表单验证相关的错误。因此,当您发布错误时,解决问题比用粗体字给出意见要容易。

谢谢。 ?

【讨论】:

  • 我打算问一个一般性问题,因为我没有特定于代码的问题。我在问最好的方法。我所说的文件消失的意思是,显然这是浏览器的正常行为,如果表单验证失败,则拒绝任何已上传到浏览器中的文件。我目前正在研究 JQuery、Ajax 方法来提交一个既有附件又有其他表单字段的 Django 表单。
  • 好的,正如你所说的,文件在浏览器中消失了。问题是浏览器与文件存储无关。这是服务器端的事情。通过使用 ajax、jQuery、js,您可以像在会话中一样临时存储文件。而 django 在这方面更直接。希望它可以帮助你:)
  • 是的,这就是我发现的。我今天继续追求这个。到目前为止,我已经用我已经能够草拟的代码打开了一个新问题。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 2011-05-20
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多