Django 无法手动使用我的DRF序列化程序

Django 无法手动使用我的DRF序列化程序,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,非常奇怪,但每当我尝试使用任何DRF序列化程序序列化对象时,例如: me = CustomUser.objects.all()[0] serializer = CustomUserSerializer(me) serializer.is_valid() # --> False print(serializer.errors) # {"non_field_errors": ["No input provided"]} 这发生在完全不同的序列化程序和不同的对象上 但是,如果我使用基于类的视

非常奇怪,但每当我尝试使用任何DRF序列化程序序列化对象时,例如:

me = CustomUser.objects.all()[0]
serializer = CustomUserSerializer(me)

serializer.is_valid()
# --> False
print(serializer.errors)
# {"non_field_errors": ["No input provided"]}
这发生在完全不同的序列化程序和不同的对象上

但是,如果我使用基于类的视图(间接使用相同的序列化程序和相同的对象),我就能够收到JSON响应,并按照预期序列化数据。换句话说,调用链接到此视图的端点

class CustomUserList(generics.ListAPIView):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer
将返回数据库中所有
CustomUsers
的JSON表示形式


一定有什么我不太明白的地方。

Django REST框架允许您通过
实例
关键字(或第一个位置参数)将对象传递到序列化程序,从而序列化对象。从那里,您只需在其上调用
数据
。这在文档的部分中都有介绍

me = CustomUser.objects.all()[0]
serializer = CustomUserSerializer(me)
serializer.data

当您处于有效状态时,只需调用
是否有效。您收到的错误(“未提供输入”)是因为您试图验证要反序列化的数据,但没有传入任何数据。

太好了。我不知道为什么我要验证一些定义上有效的东西。谢谢