Python 预处理函数

Python 预处理函数,python,json,ember.js,flask,flask-restless,Python,Json,Ember.js,Flask,Flask Restless,我试图将Ember.js和Flask untivent结合起来,但在与JSON API接口时遇到了困难 问题是,我需要调整JSON以匹配Ember所期望的客户端 余烬在POST上发送了类似的内容: u'todo': {u'isCompleted': False, u'title': u'hello'}} 但是Flask Untivent期待着这样的事情 {'is_completed': False, 'title': u'hello'} 我可以做到这一点,如下所示,但由于Flask Unti

我试图将Ember.js和Flask untivent结合起来,但在与JSON API接口时遇到了困难

问题是,我需要调整JSON以匹配Ember所期望的客户端

余烬在
POST
上发送了类似的内容:

u'todo': {u'isCompleted': False, u'title': u'hello'}}
但是Flask Untivent期待着这样的事情

{'is_completed': False, 'title': u'hello'}
我可以做到这一点,如下所示,但由于Flask Untivent Prepoccessor不接受返回参数,必须在适当的位置更改数据对象,并且创建一个包含我想要的内容的新dict将不起作用。因此,我需要通过添加和删除所需的键来笨拙地修改给定的数据dict

有没有更好的解决方案可以轻松扩展到更复杂的模型

def ember\u格式化程序(结果):
对于结果中的键。键():
如果是键!='对象':
删除结果[键]
结果['todos']=结果['objects']
del结果['objects']
def预余烬格式化程序(数据=无,**千瓦):
数据['is_completed']=数据['todo']['isCompleted']
数据['title']=数据['todo']['title']
del数据['todo']
不安的\u管理器。创建\u api(
待办事项,
方法=['GET','POST','DELETE','PUT','PATCH'],
url_前缀=“/api”,
集合_name='todos',
每个页面的结果=-1,
后处理器={
“获取多个”:[ember\u formatter]
},
预处理器={
“POST”:[pre_ember_formatter],
}
)

我不能100%确定Antinent api映射到django rest框架的距离有多近,但在您上面的示例中,DRF适配器将开箱即用


使用这种方法,您可以保持JSON api不变,只需插入一个新的客户端适配器,我将把这一点交给Toran,因为他的方法最终导致了启蒙的路径,但我想明确说明我是如何做到这一点的

我发现在Ember中,在客户端进行所有这些更改实际上更容易。一般的想法是,您需要更改从服务器传入的JSON,并更改离开客户端的JSON

这些都是在课堂上完成的,如果你看一下,这里有一些关于如何做到这一点的例子,一旦你习惯了,Ember的文档就棒极了

因此,要修改来自服务器的JSON,需要修改extractArray和extractSingle函数

要修改离开客户端的JSON,需要修改serialize和serializeIntoHash函数,这非常简单

我认为在Ember中这样做是有意义的,因为您通常无法控制与之交谈的API