我想要一个表单验证库
1.从表单验证中分离出html生成;
2.验证错误可以很容易地序列化,例如。作为json对象转储
您在python Web项目中选择哪种形式的验证库?
答案 0 :(得分:43)
<强>声明强>
一般来说,我现在对HTML表单库有点警惕。如果你使用巨型框架中的东西,你总是必须引入整个巨型框架作为你的依赖。
许多大型框架的许多子组件声称不依赖于框架,但我们不要自欺欺人。如果你不使用它,我至少知道有十几个表单库,它们在功能上有很多不同之处。只有选择才能让人感到困惑。一般来说,多年前Ian Bicking says并且仍然如此,我认为一个适合每个人的形式库的概念是非常荒谬的。事实上,我认为你可能需要三思而后才决定你真的需要一个。很可能您需要一个表单验证库,例如FormEncode。这实际上取决于你想如何使用它。
对我而言,由于我不使用大型框架,我会选择轻量级,易于拾取和配置的东西,以及不妨碍正常使用HTML /的方式JS / CSS。
END免责声明
我已尝试ToscaWidgets,ToscaWidgets 2,Formish,Deform,WTForms和FormEncode。我不得不说它们都不是完美的。以下是我与他们的经历:
截至2012年底,一个快速的Google和PyPI搜索Python验证库带来了数百个软件包。有一些值得注意的,折扣那些正在积极开发的Django扩展。似乎有一种趋势是使用JSON-Schema定义模式并能够一般性地验证Python数据结构。这可能反映了服务器应用程序开发人员从多个渠道(RESTful API和HTML表单)接受用户数据,但仍然只想使用一个验证库。
鉴于Python 3.3的发布可能会引发大规模的移植现有库以支持Python 3.x(其另一方面是看到旧库停滞并且仅与Python 2.x保持兼容),它可能会引发明智地选择一个已经支持或正在积极支持Python 3.x的人。
最后,选择表单验证库时另一个值得关注的重点是能够报告有用的错误消息,从长远来看,总是需要对错误消息进行本地化。提供自己的错误消息的难易程度将很快决定将库与其他Web应用程序架构集成的复杂性。
有前途的后起之秀:
答案 1 :(得分:12)
我可能会选择WTForms。
答案 2 :(得分:4)
这个话题有点旧,但我想我会无耻地插入我为此目的而写的库。它并不是HTML表单所独有的,但至少部分地考虑了它们。
当我命名时,我感觉不是很有创意,所以“Validator”现在必须做。在这里:https://github.com/wilhelm-murdoch/Validator
答案 3 :(得分:1)
这取决于你,然后,你使用什么类型的框架。
对于您的任务,我建议您使用web2py-Framework,它易于使用且仍然“强大”。它有form-validation by default(web2py-book是免费的),它完全符合您的要求:它从验证中分离出html生成并自动执行此操作,但如果您愿意,您可以自定义它。< / p>
一个例子:
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上询问他们。他们非常好,会很快帮助你。
希望它有所帮助!最好的问候..
答案 4 :(得分:0)
这取决于您使用的底层框架。
对于django来说,内置于表单框架是最好的,虽然kay使用zine表单系统的扩展版本
和tipfy使用WTForms。
到目前为止,django的内置系统是最好的。你在幕后使用什么框架?