尽管我在这里找到了所有内容,但我没有找到解决问题的方法。
我正在使用django
rest框架在Python 3.x上的Pycharm中处理REST API
当我在代码中使用ModelSerializer
时,我可以从我的模型中创建一个JSON
self.woodrow_attributes = {'name': 'RankA',
'gps_position_x': Decimal('40.15'),
'gps_position_y': Decimal('45.50'),
'gps_position_z': Decimal('30.50')}
self.woodrow = WoodRow.objects.create(**self.woodrow_attributes)
self.woodrow_serializer = WoodRowSerializer(instance=self.woodrow)
data_json = JSONRenderer().render(self.woodrow_serializer.data,)
我的json很好,包含所有字节类型的信息:
b'{"row_id":1,"name":"RankA","gps_position_x":"40.1500000","gps_position_y":"45.5000000","gps_position_z":"30.5000000"}'
当我想反序列化它并测试内容是否有效时,答案总是错误的。我使用ModelSerializer,当我运行此代码时:
deserialize_data = BytesIO(data_json)
deserialize_data = JSONParser().parse(deserialize_data)
print(deserialize_data)
print(type(deserialize_data))
serializer = WoodRowSerializer(data=deserialize_data)
print(serializer.is_valid())
print(serializer.error_messages)
我明白了:
{'row_id': 1, 'name': 'RankA', 'gps_position_x': '40.1500000', 'gps_position_y': '45.5000000', 'gps_position_z': '30.5000000'}
<class 'dict'>
False
{'required': 'This field is required.', 'null': 'This field may not be null.', 'invalid': 'Invalid data. Expected a dictionary, but got {datatype}.'}
错误说我的数据无效且是数据类型,但我只是打印之前它是dict
。
当我在python控制台中尝试我的代码时,它可以工作,并且序列化程序可以正确地验证我的数据。
有人有答案吗?
谢谢,
答案 0 :(得分:0)
error_messages
属性实际上不包含解析数据时实际发生的错误消息。这是静态字典,只是将某些错误映射到人类可读的消息。
您要查找的属性称为errors
。