Python和MongoEngine,TypeError:ValidationError类型的对象不可JSON序列化

时间:2018-10-05 10:00:31

标签: python api tornado mongoengine

我正在尝试使用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')
    }
});

1 个答案:

答案 0 :(得分:0)

方法self.write tries to convert your dictionary to JSON。但是它失败了,因为它无法将ValidationError对象转换为JSON表示形式(如果不是开发人员未添加的大多数例外对象,则大多数情况下也无法转换为JSON)。避免这种情况的简单方法是传递异常消息,而不是异常对象:

...
except Exception as e:
    self.write(dict(error=str(e)))