易于前端数据转换和验证。

bearform的Python项目详细描述


bearform
==
前端的数据转换和验证非常简单。bearform预计主要作为api端点的一部分使用。处理反序列化的json,
yaml或您喜欢的任何风格都是它擅长的。

[![生成状态](https://travis ci.org/wifast/bearform.svg)(https://travis ci.org/wifast/bearform)

示例
----
bearform的工作方式类似于许多表单验证器,您可以通过声明表单类来定义数据架构。例如:

from bearform import form,field

class bearform(form):
name=field(str)
type=field(str)
height=field(float)

您可以这样使用:

from bearform import formerror

@app.route(“/bear”)
def bear():
如果请求是json:
请尝试:
data=request.get戡json()
bear=bearform.decode(data)
bear.validate()
msg=“这是{}bear“.format(bear.type)
返回jsonify({'status':'success','msg':'msg'})
除了formerror作为e:
返回jsonify({'status':'fail','error':str(e)}),400
否则:
返回jsonify({'status':'fail','error':'invalid request'}),400

我也是。让我们修改我们的视图,在没有发布json时返回一个名为fluffy的小灰熊:

@app.route(“/bear”)
def bear():
如果是请求,则返回json:
尝试:
data=request.get\json()
bear=bearform.decode(data)
bear.validate()
msg=“这是一个{}bear”。format(bear.type)
返回jsonify({'status':'success','msg':'msg'})
除了formerror为e:
返回jsonify({'status':'fail','error':str(e)}),400
否则:
bear=bearform(name='fluffy',type='grizzly',height=6.3)
returnjsonify(bear.encode())


bear form提供了三种从填充的表单对象中获取数据的方法:
属性访问、to-dict方法和to-object方法。您已经在上面的示例中看到了
属性访问。to-dict方法做了一件显而易见的事情:它将表单作为字典返回。ToOObjr方法更具Br/>有趣,因为它可以用存储在
窗体对象中的解码数据填充现有对象。假设我们有一个bear文档(适当地用bearfield构建):

字段

类bear(文档):
类meta:
连接='bears'
名称=字段(str)
类型=字段(str)
高度=字段(float)

让我们解码一些数据并将其保存到数据库:

data={'name':'fluffy','type':'grizzly',height:'6.3'}
bear_form=bearform.decode(data)
bear=bear()
bear_form.to_obj(bear)
bear.save()

由于decode返回一个form对象,而to_obj返回我们传递给它的对象,我们可以将示例缩短为:


data={name':'fluffy','type':'grizzly',高度:'6.3'}
bearform.decode(data).to_obj(bear()).save()


希望将来能实现更好的bearfield集成。

在字段上包含验证器很简单:


from bearform import validationerror

def不是空的(cls,name,value):
如果不是值:
raise validationerror({}不能为空)。format(name))

def是正的(cls,name,value):
if value<;=0:
raisevalidationerror(“{}必须是正值”。format(name))

m(form):
name=field(str,validators=[is_not_empty])
type=field(str)
height=field(float,validators=[is_positive])

在解码过程中,validationerror将被提升为空,或者
bear没有正高度。

license
----
版权所有(c)2014 Wifast,inc.本项目及其所有内容均在包含的[license][1]文件中的
bsd派生许可下获得许可。

[1]:https://github.com/wifast/bearform/blob/master/license“许可”

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jframe为什么JAVA paint()方法不起作用?   java Guice:将ContainerRequestContext注入拦截器   java如何优雅地关闭Spring JMS MessageListenerAdapter   java如何在Spring中设置快照隔离级别   Java中的安卓平台独立信任存储路径   java无法在eclipse中运行hello world程序   java Sinch空指针问题   使用Java将JSON流式传输到BigQuery   java从“大数据”中选择什么Swing控件?   java通过对象字段过滤/排序集合?   java将数据从活动传递到另一个活动中的片段   java访问打包在jar文件中的文档   Java获取事件的大小。getDragboard()。getFiles()。流()。映射(文件::长度)。toString());   java Android libgdx:启动程序图标按下后,启动屏幕不会立即显示   java如何在Google App Engine灵活环境中配置oracle jdk   java有没有办法减少这些行?   Java:客户端socket不读取第二行,在终止符行之后保持打开状态   java以编程方式获取api 29上的所有APK文件   java ActionBar按钮不显示