def put(self, item_id):
"""
Handles PUT request.
Validates data and updates given item.
Returns serialized model.
Raises 405 in case of not updatable model (there must be
_update method implemented in model class).
Raises 400 in case of violated constraints, invalid parameters and other
data and integrity errors.
:raises: HTTP 405, HTTP 400.
"""
item = await self.get_item(item_id)
data = await self.validate(self.request.body, self.put_schema_input, item_id=item_id)
try:
item = await item._update(self.application, data)
except AttributeError as e:
# We can only update item if model method _update is implemented
raise HTTPError(
405,
body=self.get_response(
errors=[
{
'code': '',
'message': 'Method not allowed',
'detail': str(e)
}
]
)
)
except (peewee.IntegrityError, peewee.DataError) as e:
raise HTTPError(
400,
body=self.get_response(
errors=[
{
'code': '',
'message': 'Invalid parameters',
'detail': str(e)
}
]
)
)
self.response(result=await self.serialize(item))
评论列表
文章目录