在现实生活中,如果我使用表单框架,我不可避免地会在某些时候与它进行斗争。
我对在网站中构建表单的最佳实践模式感兴趣。参考任何语言的实现都是一个奖励(我通常使用Python)。我对向最终用户创建/显示表单的问题特别感兴趣。
以下是我看待主题的方式。表单工作流的大多数部分都可以使用相对轻量级的组件来处理,我可以从formencode和formish这样的框架中提取。 “大多数部分”是指解码将提交的表单数据转换为合理的数据结构(例如,表单中的重复字段应该成为Python中的列表); 编组将值转换为我们想要的类型(例如,“age”字段应该变成整数);并且验证值(例如“年龄不能为空”)。
我最终战斗的一点是制作和展示表格本身。许多框架(例如FormAlchemy)将他们的模式,验证和模型紧密地耦合到某种形式的小部件生成方案,这是我不喜欢的。
制作表单所涉及的任务是:
我看到的选项是:
还有其他处理问题的模式吗?各自的优点和缺点是什么?
到目前为止我已经看过/已经指出的框架(Python)是:flatland,formencode,FormAlchemy,formish,{{ 3}},WTForms表单,Django,web2py,deform和FormConvert
更新:我回答关于构建表单的最佳实践的问题并不是很远,但我已经决定使用我当前的项目来进行变形/漏勺,是处理序列化等的理智方式,但更重要的是有充分的文档和经过充分测试。除了最简单的形式之外,我将完全避免使用表单生成。
答案 0 :(得分:3)
您可以尝试django
。它有forms
模块,为Web表单提供了许多有用的机制。
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以查看web2py,它为generating and processing forms提供了多种机制(另请参见与表单相关的Javascript and Ajax functionality)。它的表单对象(和其他HTML帮助程序对象)是HTML DOM的服务器端表示,可以在序列化为HTML之前进行操作(请参阅ref1,ref2,ref3,{{ 3}})。如果您对此有任何疑问,请致电ref4。
答案 3 :(得分:1)
在PyCon 2010上展示了一个由几位表单库作者组成的小组,该小组可能与您的问题相关:
答案 4 :(得分:1)
我最近使用flatland处理复杂的表单,发现它非常灵活。没有小部件库,但它有一个强大的HTML生成器/过滤器,并且在文档中作为pointed out,编写自己的小部件非常简单。不要让“0.0.2”版本欺骗你,图书馆非常成熟和稳定。
答案 5 :(得分:0)