python - django 序列化器 is_valid() 返回 false
问题描述
使用 django 2.0.2 Python 3.4
MySerializers.py
class MySerializer(BaseSerializer):
UserUID = serializers.CharField()
DeviceUID = serializers.CharField()
SessionId = serializers.CharField()
我的视图.py
class MyVeiw(BaseViewSet):
serializer_class = MySerializer
def create(self, request, *args, **kwargs):
serializer_class = MySerializer(data=request.data.dict())
if serializer_class.is_valid():
print(serializer_class.errors)
return Response(0)
else:
return Response(1)
输入数据
{'SessionId': '222a282f-c3f8-46d2-8476-8d4ec627a477', 'UserUID': '62', 'DeviceUI
D': '25'}
序列化程序类
return MySerializer(data={'SessionId': '7c5d0530-8e54-42aa-91a0-ce8776c82490', 'Us
erUID': '64', 'DeviceUID': '27'}):
UserUID = CharField()
DeviceUID = CharField()
SessionId = CharField()
serializer_class.initial_data
return {'UserUID': '65', 'DeviceUID': '28', 'SessionId': 'aecef14f-
7f9d-4f01-bc1d-89514 8ab0c05'}
serializer_class.errors
return {}
但is_valid()
总是false
为什么错误return empty list
我尝试了 SessionId 更改UUIDField()
但不起作用
和UserUID
,DeviceUID
改变IntegerField()
但不起作用
我认为这个序列化程序是有效的为什么返回 false
解决方案
更改class MySerializer(BaseSerializer):
为class MySerializer(Serializer):
。
正如熊布朗提到的那样;如果你继承自BaseSerialzier
,你应该定义to_internal_value
你自己。
默认情况下,BaseSerializer
引发一个NotImplementedError
:
def to_internal_value(self, data):
raise NotImplementedError('`to_internal_value()` must be implemented.')
推荐阅读
- regex - 如何通过正则表达式从头到尾搜索字符串
- scala - 为什么 Java HashMap put 在 Spark Scala 中不起作用?
- jmeter - 无法在 JMeter 中使用 SSH SFTP 采样器获取文件
- firebase - Firebase 查询未按预期工作 React native
- sql - 表中的最大长度值
- laravel - 如何访问元素 Eloquent 查询
- reactjs - React Context API - 在上下文更改时重新渲染组件而不将渲染包装在消费者中
- c++ - 为什么要使用 extern 关键字在命名空间范围内声明变量?
- javascript - 如何使用 createjs 为图像应用渐变颜色?
- javascript - JQuery:切换新创建的 DIV -> 链接到 $(this) 而不是 $(this).closest()