为morepath加载json基础设施
more.body-model的Python项目详细描述
more.body_model:`` load_json`` morepath的基础设施
===============================================
,其思想是在应用程序级别识别发布了什么样的json内容
,并将其转换为python对象。您可以将这个
application对象与“request.body\u obj”一起使用。使用“body_model”,您可以编写与该类型模型特别匹配的视图。
代码块::python
from more.body_model导入body model app
class app(bodymodelapp):
pass
注意:如果要在已安装的应用程序上使用body_model,请确保基本应用程序和已安装的应用程序都是
``more.body_model.body model app``的子类。否则它将无法工作。
load_json
--
``app.load_json``指令允许您定义一个函数,该函数将
传入的json转换为python对象。此行为由
应用程序中的所有视图共享。我们使用类型字段“item”检测json,并将其解释为
“item”实例,然后传递其他所有内容:
。代码块::python
@app.load_json()
def load_json(json,请求):
if json.get('type')!=“item”:
return json
return item(json['x'])
代码块::python
@app.json(model=collection,request_method='post')
def collection_post(self,request):
collection.add(request.body_obj)
return“成功!”
通过指定
`` body_model``:
,您可以编写与“body_obj”类匹配的视图。代码块::python
@app.json(model=collection,request_method='post',body_model=item)
def collection_post_item(self,request):
collection.add(request.body_obj)
返回“成功!”
主体模型
----
定义应用程序的json主体转换代码,我们通常可以使用
``app.load_json``:
……代码块::python
@app.load_json()
def load_json(json,请求):
如果是有效的文档_json(json):
返回文档(title=json['title',
author=json['author',
content=json['content'])
只需返回普通的json
return json
现在我们在“request.body_obj``中得到了一个“document``实例,因此
我们可以简化“document_collection_post`:
代码块::python
@app.json(model=document collection,request_method='post')
def document_collection_post(self,request):
如果不是实例(request.body_obj,document):
raise webob.exc.httpunprocessableentity()
result=self.add(request.body_obj)
返回request.view(result)
仅当“body_obj”是“document”的实例时才匹配我们可以在视图上使用“body_model”:
代码块::python
@app.json(model=document collection,request_method='post',body_model=document)
def document_collection_post(self,request):
result=self.add(request.body_obj)
return request.view(result)
如果找不到匹配的“body_model”`
,您将免费获得“422”错误。您还可以为
``documentcollection``创建其他类型的“post”视图,以这种方式处理其他类型的json内容。
===============================================
,其思想是在应用程序级别识别发布了什么样的json内容
,并将其转换为python对象。您可以将这个
application对象与“request.body\u obj”一起使用。使用“body_model”,您可以编写与该类型模型特别匹配的视图。
代码块::python
from more.body_model导入body model app
class app(bodymodelapp):
pass
注意:如果要在已安装的应用程序上使用body_model,请确保基本应用程序和已安装的应用程序都是
``more.body_model.body model app``的子类。否则它将无法工作。
load_json
--
``app.load_json``指令允许您定义一个函数,该函数将
传入的json转换为python对象。此行为由
应用程序中的所有视图共享。我们使用类型字段“item”检测json,并将其解释为
“item”实例,然后传递其他所有内容:
。代码块::python
@app.load_json()
def load_json(json,请求):
if json.get('type')!=“item”:
return json
return item(json['x'])
代码块::python
@app.json(model=collection,request_method='post')
def collection_post(self,request):
collection.add(request.body_obj)
return“成功!”
通过指定
`` body_model``:
,您可以编写与“body_obj”类匹配的视图。代码块::python
@app.json(model=collection,request_method='post',body_model=item)
def collection_post_item(self,request):
collection.add(request.body_obj)
返回“成功!”
主体模型
----
定义应用程序的json主体转换代码,我们通常可以使用
``app.load_json``:
……代码块::python
@app.load_json()
def load_json(json,请求):
如果是有效的文档_json(json):
返回文档(title=json['title',
author=json['author',
content=json['content'])
只需返回普通的json
return json
现在我们在“request.body_obj``中得到了一个“document``实例,因此
我们可以简化“document_collection_post`:
代码块::python
@app.json(model=document collection,request_method='post')
def document_collection_post(self,request):
如果不是实例(request.body_obj,document):
raise webob.exc.httpunprocessableentity()
result=self.add(request.body_obj)
返回request.view(result)
仅当“body_obj”是“document”的实例时才匹配我们可以在视图上使用“body_model”:
代码块::python
@app.json(model=document collection,request_method='post',body_model=document)
def document_collection_post(self,request):
result=self.add(request.body_obj)
return request.view(result)
如果找不到匹配的“body_model”`
,您将免费获得“422”错误。您还可以为
``documentcollection``创建其他类型的“post”视图,以这种方式处理其他类型的json内容。