sat*_*oru 37 python validation formencode toscawidgets wtforms
我想要一个表单验证库
1.从表单验证中生成单独的html;
2.验证错误可以很容易地序列化,例如.作为json对象转储
你会在python web项目中选择什么形式的验证库?
Y.H*_*ong 43
放弃
一般来说,我现在对HTML表单库有点警惕.如果你使用大型框架中的东西,你总是必须引入整个巨型框架作为你的依赖.
许多巨型框架的许多子组件声称不依赖于框架,但我们不要自欺欺人.如果你不使用它,我至少知道有十几个表单库,它们在功能上有很多不同之处.仅仅是选择就会让人感到困惑.一般来说,正如Ian Bicking多年前所说并且仍然如此,我认为一个适合每个人的形式库的概念是非常荒谬的.事实上,我认为你可能需要三思而后才决定你真的需要一个.您可能只需要FormEncode等表单验证库.这真的取决于你想如何使用它.
对我来说,由于我没有使用超级框架,我会选择轻量级,易于拾取和配置的东西,以及不妨碍正常使用HTML/JS/CSS的东西.
结束免责声明
我试过ToscaWidgets,ToscaWidgets 2,Formish,变形,WTForms和FormEncode.我不得不说它们都不是完美的.这是我与他们的经历:
截至2012年底,一个快速的谷歌和PyPI搜索Python验证库回来了数百个包.有一些值得注意的,折扣那些正在积极开发的Django扩展.似乎有一种趋势是使用JSON-Schema定义模式,并且能够通用地验证Python数据结构.这可能反映了服务器应用程序开发人员从多个渠道(RESTful API和HTML表单)接受用户数据,但仍然只想使用一个验证库.
鉴于Python 3.3的发布可能会引发大规模的移植现有库以支持Python 3.x(另一方面是看到旧库停滞并且仅与Python 2.x保持兼容),这可能是明智之举选择一个已经支持或正在积极支持Python 3.x.
最后,选择表单验证库时另一个值得关注的重点是能够报告有用的错误消息,从长远来看,总是需要对错误消息进行本地化.提供自己的错误消息的难易程度将很快确定将库与其他Web应用程序体系结构集成的复杂性.
有前途的后起之秀:
这取决于天气,然后取决于您使用什么类型的框架。
对于您的任务,我建议您使用web2py-Framework,它易于使用并且仍然“强大”。它默认具有表单验证功能(web2py-book是免费的),这正是您想要的:它将 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)
Run Code Online (Sandbox Code Playgroud)
也可以序列化错误,但对于这些问题,最好在web2py-group上询问。他们非常友善并且会很快为您提供帮助。
希望能帮助到你!此致..