Django中表单的需求是什么?

时间:2017-11-06 07:13:51

标签: javascript python django django-forms

我是Python / Django的菜鸟,想知道Django表格与html表单相比还有什么好处?从我在一些教程中看到的,Django表单主要用于前端验证,也可以通过html / JavaScript完成,那么我为什么要使用Django表单呢?

1 个答案:

答案 0 :(得分:1)

前端“验证”有助于wrt / UI / UX,但绝不是后端验证和清理的替代品。好吧,除非你没有你的网站,可能整个服务器被任何脚本小子攻击。请记住,“前端验证”仅适用于(某些)浏览器(并且可以被取消激活),并且您可以在没有浏览器的情况下发布请求(来自命令行实用程序,如curl,来自Python或Perl或任何脚本等)。

所以你需要后端验证/清理无论如何,做正确的事情很难 - 这就是为什么大多数手工编写的PHP网站都像黑客一样开放。

Django的表单验证除了检查文本字段的长度外,还支持方式,它支持所有必需的清理,从原始文本值(从HTTP请求获得的内容)转换为正确的Python类型(包括模型实例),自定义字段验证,自定义验证器和clean_FIELD挂钩,跨字段验证等,以及向用户报告验证错误的标准化方法(显示所有验证错误)曾经 - 大多数手工编码的形式“验证”我已经看到第一个错误停止,这是确保您的用户将绝望放弃的一种可靠方法)。它们还提供了一种标准化的方法来进行前端渲染而不会违反DRY(所有代码 - 表单的字段,帮助文本,标签,错误消息等在Form类中定义一次)。总而言之,使用Django的表单,您将所有表单的逻辑封装在一个地方,并将视图的代码和模板代码减少到最低限度,而不是将代码分散到各处,并在每个视图中重复相同的基本验证

此外,Django ModelForm极大地简化了创建/编辑模型(数据库记录)。然后,大多数验证都是从模型的定义本身派生出来的,并且清理将保护您免受SQL注入等。

所以这一切都归结为决定你是否更喜欢复杂,臃肿,不一致,脆弱和不安全的代码或干净,精简,简单,一致和(默认情况下)合理安全的代码。你的选择......