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

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第三方库


热门话题
使用applets查询的多人java游戏?   java如何基于字符串生成数组   基于java多边形的路径查找   java如何对多列ArrayList排序   java批处理更新从更新中返回了意外的行数(Spring/Hibernate)   java如何使用SeleniumWebDriver列出<tr>标记内的所有<td>   java如何使用SimpleFlatMapper将前缀为CSV的列别名到映射?   java为什么通过eclipse运行/调试TomCat时会出现ClassNotFoundException   java Android滚动视图上次视图未显示内部线性布局   替换字符串中不带空格的字符序列   调用方法时Java Swing GUI冻结   java是否允许/建议重用收集器?   在同步方法中使用java hashmap迭代器时   在java XMLDecoder XMLEncoder中写入XMLdatabase   java I无法在活动的片段中填充recyclerview   java Jitsi在调用过程中播放WAV文件如果可能,与音频混合   java JPA为什么我看到DB中每行有两个实体实例?