用于显示表单数据和验证错误的最干净的设计模式?

seb*_*seb 9 python forms design-patterns

在现实生活中,如果我使用表单框架,我不可避免地会在某些时候与它进行斗争.

我对在网站中构建表单的最佳实践模式感兴趣.参考任何语言的实现都是一个奖励(我通常使用Python).我对向最终用户创建/显示表单的问题特别感兴趣.

这是我看待主题的方式.表单工作流的大多数部分都可以使用相对轻量级的组件来处理,我可以从框架中删除formencodeformish."大多数部分"是指提交的表单数据解码为合理的数据结构(例如,表单中的重复字段应该成为Python中的列表); 将值编组到我们想要的类型中(例如,"age"字段应该变成整数); 并验证这些值(例如"年龄不能为空").

我最终战斗的一点是制作和展示表格本身.许多框架(例如FormAlchemy)将他们的模式,验证和模型紧密地耦合到某种形式的小部件生成方案,这是我不喜欢的.

制作表格所涉及的任务是:

  • 制作动态小部件(例如,包含来自数据库的值的选择列表)
  • 循环重复的字段集(例如,每个代表一个人的名称,年龄对的列表)
  • 在表单字段中嵌入现有值(来自数据结构)
  • 在表单字段旁边或页面顶部显示验证错误

我看到的选项是:

  • 生成,基于模式中定义的小部件(例如Django)
  • 后处理表单,通过将包含错误和值的数据结构应用于HTML模板(例如htmlfill)
  • 对于除了最简单的情况之外的所有情况,您可以从一开始就通过在每个表单模板中手动编码逻辑(循环,错误显示等)来开始

有没有其他模式来处理这个问题?各自的优点和缺点是什么?

(蟒蛇)我已经看了/曾指出,该框架到目前为止是:平原,formencode,FormAlchemy,formish,WTForms,Django的形式,web2py中,变形,FormConvertweb.py

更新:我回答关于构建表单的最佳实践的问题并不是很远,但我已经决定使用我当前的项目来进行变形/漏勺,这是处理序列化等的理智方式,但是更重要的是有充分的文件证明和经过充分测试.除了最简单的形式之外,我将尽量避免使用表单生成.

gru*_*czy 3

你可以试试django。它有forms一个模块,为网络表单提供了许多有用的机制。