我正在尝试使用python龙卷风构建REST API,在将数据发布到API“ TypeError:ValidationError类型的对象不可JSON可序列化”的API时,直到收到此消息,所有方法都运行良好。
def post(self):
try:
data = convert_arguments(self.request.arguments)
self.write(dict(result=HazardManager().create_hazard(**data)))
except Exception as e:
self.write(dict(error=e))
create_hazard()
是用于与数据库建立连接的函数,它说保存我的数据并返回该对象
def create_hazard(self, **data):
try:
hazard = HazardDB(title=data['title'], datetime=data['datetime'], location=data['location'], description=data['description'])
hazard.commit(True)
return hazard.to_json()
except Exception as e:
return e
这是我如何在客户端调用POST方法,
$.ajax({
type: "POST",
url: 'api/v1/hazards',
data: $('form').serialize(),
success: function(data){
console.log(data)
},
error: function(){
console.log('error')
}
});
答案 0 :(得分:0)
方法self.write
tries to convert your dictionary to JSON。但是它失败了,因为它无法将ValidationError对象转换为JSON表示形式(如果不是开发人员未添加的大多数例外对象,则大多数情况下也无法转换为JSON)。避免这种情况的简单方法是传递异常消息,而不是异常对象:
...
except Exception as e:
self.write(dict(error=str(e)))