这里的介绍的serializers.ModelSerializer就和我们之前学习的modelform一样
serializers.ModelSerializer如下几个功能
1、序列化queryset数据
2、反序列化json数据,将反序列化后的数据转换成model对象
3、反序列化的时候还是可以对数据做校验
4、如果合法,可以调用sava方法进行post或者put请求操作
5、如果不合法,则返回错误
下面我们进入serializers.ModelSerializer的学习
首先写一个modelserializer的类,不知道看官有没有发现,和我们之前学的modelform几乎完全一样
class bookmodelserializer(serializers.ModelSerializer):
class Meta:
model = models.Book
fields = "__all__"
然后我们在get请求中,如何通过上面的类序列化queryset对象,可以看到直接之前的serializer类替换为modelserializer类就可以了
from rest_framework.views import APIView
from rest_framework.response import Response
class Book_cbv(APIView):
def get(self,request):
query_list = models.Book.objects.all()
# bs = book_serializers(query_list,many=True)
bs = bookmodelserializer(query_list,many=True)
print(dir(serializers))
return Response(bs.data)
通过postman发送get请求,我们看下受到的信息,我们看到一对多字段和多对多字段均为所对应对象的id,我们可以定制化的显示我们需要显示的信息,但是这里暂时不做讲解,在博客的后面我们在做讲解
上面处理完了get请求,下面我们在处理一下post请求,我们通过postman发送json信息,然后通过modelserializerlizer直接保存信息,post请求处理的代码如下
如何数据有效,则保存数据,这个也和modelform非常的类型,可以说是完全一样
def post(self,request):
bs = bookmodelserializer(data=request.data)
if bs.is_valid():
print(bs.validated_data)
bs.save()
return Response(bs.data)
else:
return Response(bs.errors)
下面我们通过postman发送post请求,测试一