Bud*_*hot 5 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"]}
Run Code Online (Sandbox Code Playgroud)
这发生在完全不同的序列化程序和各种对象上。
但是,如果我使用基于类的视图(间接使用相同的序列化程序和相同的对象),我能够接收到数据按预期序列化的 JSON 响应。换句话说,调用链接到此视图的端点
class CustomUserList(generics.ListAPIView):
queryset = CustomUser.objects.all()
serializer_class = CustomUserSerializer
Run Code Online (Sandbox Code Playgroud)
确实会返回CustomUsers数据库中所有的 JSON 表示。
一定有什么我不太明白的地方。
Kev*_*own 11
Django REST Framework 允许您通过instance关键字(或第一个位置参数)将对象传递给序列化程序来序列化对象。从那里,你只需要调用data它。这都包含在序列化对象中文档部分进行了介绍。
me = CustomUser.objects.all()[0]
serializer = CustomUserSerializer(me)
serializer.data
Run Code Online (Sandbox Code Playgroud)
您只需要is_valid在将数据反序列化为对象时调用。您收到的错误(“未提供输入”)是因为您正在尝试验证要反序列化的数据,但没有传入任何数据。
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |