【问题标题】:Form validation in djangoDjango中的表单验证
【发布时间】:2009-07-15 12:54:46
【问题描述】:

我刚开始使用 django。我遇到了表单,我需要知道哪一个是验证表单的更好方法。是使用 django 表单还是我们应该使用 javascript 或一些客户端脚本语言来做到这一点?

【问题讨论】:

  • 使用标签django 比使用子标签django-forms 获得更多的观众。始终尝试为您正在使用的主要平台/语言包含至少一个标签(例如.netjavadjango 等),尤其是当您没有达到五个标签的限制时。

标签: python django django-forms


【解决方案1】:

您应该始终在服务器端验证您的表单,客户端验证只是为用户提供便利。

话虽如此,Django 表单有一个变量 form.errors 显示某些表单字段是否不正确。

{{ form.name_of_field.errors }} 可以为您提供错误填写的每个字段的每个单独错误。在这里查看更多:

http://docs.djangoproject.com/en/dev/topics/forms/

【讨论】:

  • 文档没有提到的一件事是{{ form.non_field_errors }} 的存在,当你想just适用于整个表单的错误。
  • 是的,我发现文档确实遗漏了很多东西,或者他们根本没有详细说明。我希望随着框架的发展,文档也能做到。
  • 重申 Alberto 所说的:客户端验证不是验证。任何人都可以制作 POST 或 GET 请求。您从客户端验证获得的唯一实际好处是用户的“Web 2.0 AJAXy 感觉”,但这不是验证——它发生在服务器端。
【解决方案2】:

有一个可插入的 Django 应用程序 (django-ajax-forms) 可帮助通过 JavaScript 在客户端验证表单。但正如 AlbertoPL 所说,仅将客户端验证用作可用性度量(例如,告诉用户他想要的用户名已经被使用,而无需重新加载注册页面)。有各种方法可以避开客户端验证,在大多数情况下就像停用 JavaScript 一样简单。

一般来说:假设所有来自外部的数据在验证之前都是错误的。

【讨论】:

    【解决方案3】:

    刚刚遇到 django-floppyforms,它似乎默认进行客户端验证。他们使用默认支持客户端验证的 HTML5。如果浏览器不支持 HTML5,但不确定他们是否也使用 javascript。自己还没试过。

    django-floppyforms 的链接:DocumentationGithub

    【讨论】:

      【解决方案4】:

      如果您使用的是引导程序,那么您可以简单地在表单字段中添加必需的属性。例如,如果有 programe 字段,那么您可以像这样验证它:

      在forms.py中:

      programme = forms.ChoiceField(course_choices,required=True, widget=forms.Select(attrs={'required':'required'}))
      

      注意:它需要链接到该表单的.html 页面中的引导文件。

      【讨论】:

        【解决方案5】:

        你需要做的是 JS。 This app 将表单与 parsley.js 集成以自动使用正确的 data-* 属性标记表单。

        【讨论】:

          猜你喜欢
          • 2011-03-10
          • 2011-01-19
          • 2021-06-05
          • 1970-01-01
          • 1970-01-01
          • 2014-12-06
          • 2017-08-24
          • 2019-02-02
          • 2020-06-10
          相关资源
          最近更新 更多