我正在评估一些Web应用程序框架,最后,两个最大的竞争者(在我看来)是Ruby on Rails和Pylons。为了在不花费太多时间的情况下更好地理解这两个框架,我决定在一个框架上遵循一个非平凡的应用程序教程,并尝试在另一个框架上重复相同的事情。我希望这次演习能突出显而易见的差异。挂架:在模型层验证数据
对于我的实验,我选择了Ruby on Rails Tutorial。我已经在Rails中完成了应用程序,现在我已经开始在Pylons中完成它了。我已经达到了第6章,没有太多的戏剧性(鉴于它大部分是静态页面,直到这一点,这并不奇怪)。现在,我需要为用户实现模型,并将验证逻辑添加到模型中。第一部分很简单,但我被困在第二部分。
从我看到的,Pylons采取在窗体级别上实现验证的方法。做了一些研究,我看到很多人认为接受表单输入的地方是输入验证的正确位置。我也经历了很多github上的挂架项目,并且我一直无法找到处理模型级数据验证的单个项目。我见过的最接近的地方是开发人员将他们的表单与模型图层中的数据一起存储,但我认为这是欺骗行为。我不介意不按照教程来跟随人群,但我碰巧赞同教程。对于有问题的模型,验证在正确的位置完成:检查密码长度,用户名长度以及验证电子邮件实际上是电子邮件都被认为是模型级限制。此外,如果我至少有两种将数据添加到此模型(创建新用户,修改信息)的表单,并且以两种不同形式重复相同的验证听起来不太合适。
为了长话短说(突出显示TLDR):有没有我可以使用的基础结构,它比建议的SQLAlchemy/formencode对更紧密地将表单绑定到模型上?有了这两个,我能做的最好的就是在模型层添加断言。实际上,这不是事实,我可以尝试用自定义代码弥合差距,但它确实看起来像很多代码,很难正确。所以,我认为在尝试扩展我不太了解的代码之前先问问一下最好。
该解决方案必须处理两件事:检测验证错误,并通过表单回报。所以我需要实现一些在表单和模型字段之间创建绑定的东西,并在模型验证器中为表单字段添加错误消息,并防止模型被保存。我仍然认为咀嚼初学者有点过分。 :) – vhallac 2010-11-04 08:31:12
我决定只继续表单验证。完成应用程序后,我会重新讨论这个问题,如果我得到可用的东西,我会发布一个答案。在此之前,这看起来很有希望,所以我将其标记为答案。 – vhallac 2010-11-08 10:08:06