SignUp表单验证:前端Javascript与后端Python?

时间:2012-11-20 07:18:21

标签: javascript python web-applications web client-server

客户端Javascript与服务器端Python

如果我想创建一个注册表单,通过每种方法验证 - 检查 - 错误输入的优缺点是什么。你推荐什么?

2 个答案:

答案 0 :(得分:9)

需要服务器端(后端)代码来创建注册系统。您需要以某种方式创建用户并存储用户输入的数据,并且无法在客户端上完成。

混合服务器端和客户端的最常见情况是这样的:

  • 使用客户端代码改善用户体验。这意味着:初始验证,可能是AJAX请求,以检查是否例如:所选用户名有效且可用。
  • 使用服务器端代码进行最终验证(您无法信任来自客户端的任何),并且显然最终通过创建新用户并将其存储在数据库中来执行实际注册。 / LI>

假设您的绝大多数用户都启用了JavaScript,并且您也没有为那些不这样做的用户提供出色的用户体验,那么可以通过提供详细的错误消息来简化事情(例如,在客户端验证逻辑中涉及突出显示错误的字段),而在服务器端验证失败时只显示一般错误消息。
但是,如果有些事情你无法在客户端上正确验证(即使他已经启用了JS,因为你可以使用AJAX),你应该确保服务器端验证确实显示了正确的错误消息,所以用户知道什么是错的。

如果用户没有提交任何大的内容(例如文件上传),并且在提交无效的情况下你有一些干净的方法来重新填写所有表单字段,那么最简单的解决方案就是只进行服务器端验证,因为这样做避免创建验证逻辑两次(假设您没有某种方式以抽象的方式指定它,可以由服务器端和客户端代码访问)。

另一种可能性 - 尤其是涉及密码字段时的好主意(对于良好的用户体验,您希望保留用户即使在提交错误后输入的内容,但从安全的角度来看,您不应该发回用户的密码以避免它从某处缓存) - 将使用AJAX提交整个表单,例如发回一个JSON有效负载,其中包含用户在成功时应重定向的URL或发生故障时的错误列表。这尤其具有以下优点:您可以轻松地编写服务器端代码,以便在发出AJAX请求时返回JSON有效负载,或者在正常请求的情况下返回完整的HTML页面。

答案 1 :(得分:1)

<强>的JavaScript
  - 优点:
易于测试和实施。在进行表单验证时,JavaScript可以进行即时验证,并且具有许多用于正则表达式检查和DOM遍历(jQuery)的实用程序。此外,处理被卸载到客户端(虽然这可以忽略不计)   - 缺点:
不支持JavaScript的用户

<强>的Python
  - 优点:
支持没有JavaScript的用户。隐藏,因此更安全。
  - 缺点:
需要刷新页面才能显示结果。这对于一些用户来说可能是令人沮丧的,因为不应该保存所有字段(例如密码字段)。

我会使用JavaScript进行即时反馈,使用Python进行最终结果错误检查,并将其作为没有JavaScript的用户的后备。