Python表单validation库的build议
我想要一个表单validation库
1.从表单validation分离HTML代码;
2.validation错误可以很容易地序列化,例如。 倾销为json对象
什么forms的validation库,你会select在一个Python Web项目?
放弃
一般来说,我现在对HTML表单库有点小心。 如果你使用一个巨型框架的东西,你总是必须把整个巨型框架作为你的依赖。
许多巨型框架的许多子组件声称不依赖框架,但不要欺骗自己。 如果你不使用它,至less有十几个表单库,我知道它们在function上有很大的差异。 只是单纯的select会变得相当混乱。 总的来说,正如伊恩·贝克多年前所说的那样 ,我认为一个适合每个人的forms图书馆的概念是相当荒唐的。 事实上,我认为在决定真的需要一个之前,你可能需要三思而行。 机会大部分是你只需要像FormEncode一样的表单validation库。 这真的取决于你想如何使用它。
对我来说,因为我没有使用超级框架,所以我会select一些轻量级,易于获取和configuration的东西,并且不会妨碍正常使用HTML / JS / CSS 。
END免责声明
我已经尝试了ToscaWidgets , ToscaWidgets 2 , Formish , Deform , WTForms和FormEncode。 我不得不说任何一个都不是完美的。 这是我的经验:
- ToscaWidgets,ToscaWidgets 2 – 非常强大,但也非常复杂。 ToscaWidgets 2更好,但它仍然是一个自动柜员机。 需要相当多的忍者技能来设置,而且当你需要自定义默认的模板时,你的代码会相当快地膨胀起来。
- 形态/变形 – 几乎和TW一样强大,但是Formish现在处于hibernate状态。 这对Mako来说也是非常紧密的,所以如果你不使用Mako,那可能不适合你。 Deform是Formish的重写,但它带来了大量的Zope依赖。 变色龙在支持除ZPT之外的其他模板语言方面还不够完善。 这两个库也不是特别容易设置。
- WTForm – 非常简单,不会妨碍您的发展,并且非常活跃。 它远不及上述库,但它通常会处理您可能遇到的80%的使用情况,所以它足够好。
- FormEncode – 自2005年以来一直处于试验阶段。它经过了充分testing,具有最多数量的预构buildvalidation器,支持条件validation以及几十种语言的有用错误消息。 它也有一个非常简单但有针对性的能力,用HTML预先填充值和错误消息来生成表单代码。 它的缺点包括偶尔不直观的API和其绝对spagetti像内部代码。 然而这个库是非常可靠的,并且适用于所有的数据validation用例,这是我总是回来的。
截至2012年底,一个快速的Google和PyPIsearchPythonvalidation库回来了数以百计的包。 还有十几个值得注意的,正在积极发展中的Django扩展。 使用JSON-Schema定义模式似乎有一个趋势,并且能够一般地validationPython数据结构。 这可能是服务器应用程序开发人员从多个渠道(RESTful API和HTML表单)移动接受用户数据的反映,但仍然只想使用一个validation库。
鉴于Python 3.3的发布,可能会引发巨大的移动,将现有的库移植到支持Python 3.x上(另一方面,旧版库停滞不前,只能与Python 2.x兼容),但明智的做法是select一个已经支持或正在积极支持Python 3.x.
最后,当select一个表单validation库时,另外一个值得关注的地方是能够报告有用的错误信息,这些信息总是包含了从长远来看错误信息本地化的需求。 提供自己的错误消息的方便性将迅速确定将库与其他Web应用程序体系结构集成的复杂性。
有前途的前来:
- 性感 (非常stream行,非常简单的API)
- Kanone (受到FormEncode的启发)
- 架构 ( docopt的相同作者,非常简单的API)
我可能会selectWTForms 。
这个话题有点过时,但我想我会无耻地插上一个我为此目的而写的图书馆。 这不是排他性的HTML表单,而是与他们写在一起,至less部分是在脑海中。
当我命名它时,我感觉不太有创意,所以“validation器”现在必须要做。 在这里你去: https : //github.com/wilhelm-murdoch/Vididator
这取决于什么时候,然后,你使用什么types的框架。
为了您的任务,我build议您使用web2py-Framework ,它易于使用,而且仍然“威猛”。 它有默认的表单validation ( web2py-book是免费的),它确实是你想要的:它从validation中分离html代码并自动执行,但是如果你愿意的话,可以自定义它。
一个例子:
def display_form(): form=FORM('Your name:', INPUT(_name='name', requires=IS_NOT_EMPTY()), INPUT(_type='submit')) if form.accepts(request.vars, session): response.flash = 'form accepted' elif form.errors: response.flash = 'form has errors' else: response.flash = 'please fill the form' return dict(form=form)
也可以序列化错误,但对于这些问题,最好在web2py-group上询问他们。 他们非常好,会帮助你很快。
希望能帮助到你! 最好的祝福..
这取决于你使用的底层框架。
对于Django来说,build立在表单框架中是最好的,
而凯则使用zine的表单系统的扩展版本
和tipfy使用WTForms。
Django的内置系统是迄今为止最好的。
你在底下使用了什么框架?