我正在编写一个Django应用程序,我想知道是否有必要进行客户端验证。 Django通过后端的python中的表单处理所有验证。如果某些内容验证错误,则用户将返回到屏幕,并且所有信息仍然存在。
我无法看到在Django中实现客户端验证的任何原因?这是真的?我能想到的唯一原因是它会为服务器节省一些点击量,但这似乎可以忽略不计。
答案 0 :(得分:3)
如果您的Web应用程序面向公共Internet客户端,则验证几乎是用户的期望。如果音量低且人们有动力使用您的网站,您可能会忽略这一点。
对于公司内部网站点,额外的开发成本可能会影响客户端验证。但是,如果您使用可用的客户端框架(例如jquery或django-parsley),则客户端验证的额外成本实际上相当小,并且可能值得在intraweb应用程序中付出代价。
ADDED
是的,正如其他人已经说过客户端唯一的验证非常糟糕,因为它与无验证相同 - 您可以强制浏览器将您想要的任何内容发送回服务器。
你也可以做很多客户端的好东西,你不能服务器端。有时这些与客户端验证密切相关。
例如,将评论限制为500个字符。使用客户端代码,您可以在屏幕上显示剩余字符数 - 只需稍加计划,就可以将其与验证代码集成。
答案 1 :(得分:2)
客户端验证可以改善用户体验(减少页面重新加载)。它可能会减少服务器的点击次数(但有时这个数字会增加:)。但这没有必要。
无论如何,服务器端验证是必须的。您无法信任来自用户输入的数据。
答案 2 :(得分:1)
这主要是一个意见问题,但我不得不说 - 你不需要实施客户端验证。特别是当您可以通过简单的Ajax POST从Django表单returned as JSON中获取所有错误时。
Django表单在验证输入方面已经做得非常出色,那么为什么要添加更多代码来维护两个做同样事情的地方呢?你绝对必须进行服务器端验证,那么为什么不在一个地方完成呢?
此外,如果您没有在服务器上实现与客户端相同的验证,或者更糟糕 - 只进行客户端验证,有人总是可以在浏览器中关闭JavaScript并可能绕过您的验证(s )或者如果你不小心,允许垃圾数据进入你的数据库。