Pyramid:使用simpleform还是deform?

16 投票
4 回答
4959 浏览
提问于 2025-04-16 15:44

我正在开发一个新的(Python)网页应用,使用的是Pyramid这个框架。我想找一个可以处理表单绑定和验证的库,目前找到了simpleformdeform这两个。有没有人对这两个库有经验,可以告诉我为什么我应该选择其中一个而不是另一个?我并没有使用ORM,只是简单的POPO(Plain Old Python Objects)。

我觉得现在我更倾向于选择最简单的那个。

4 个回答

2

虽然这是第三种选择,但你有没有考虑过ToscaWidgets2呢?

从我对simpleform和deform的简单了解来看,ToscaWidgets2在功能和简单性方面,似乎是两者之间的一个很好的折中选择。

这里还有一个关于如何在Pyramid中使用它的教程,你只需要去掉数据库的部分,然后把表单的值以字典的形式提供就可以了。

3

我还没用过simpleform,但我正在做的一个项目里用到了deform。deform可以根据一个叫colander的结构来生成模板,这个功能非常方便。而且,如果你的结构不符合要求,你只需要调用ValidationFailure.render()(在捕获到ValidationFailure异常后)就能显示一个可以自定义的错误信息,和表单一起呈现出来。我现在在考虑是一次性渲染整个表单,还是分开逐个渲染。如果能把一些组件组合在一起渲染就更好了。

11

我对这两者的经验不算丰富,但到目前为止,我学到的就是这些。

它们都使用了一个叫做colander的工具(我非常喜欢这个工具)来定义和验证表单。在我看来,真正让它们不同的是它们的渲染方式。在这方面,deform是最简单的,你只需要在模板中用form.render()就能渲染整个表单。而simpleform则需要你手动渲染每一个字段。这可能是好事,也可能是坏事,具体要看你的需求。

simpleform的一个缺点是,目前在模板中处理序列模式(sequence schemas)没有明确的方法。

补充一下,我觉得deform的文档更好。

撰写回答