from rest_framework.views import APIView from .serizlizer import BookSerializers from rest_framework.response import Response from .models import Books class BookView(APIView): def post(self, request): print(request) ser = BookSerializers(data=request.data) if ser.is_valid(): ser.save() return Response(ser.data) def get(self, request): book_list = Books.objects.all() # many=True 代表序列化多条数据 ser = BookSerializers(instance=book_list, many=True) """ <class 'rest_framework.serializers.ListSerializer'> ser 是ListSerializer的对象 """ print(type(ser)) # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程 return Response(ser.data) # 查询单条 class BookDetailView(APIView): def get(self, request, pk): book = Books.objects.filter(pk=pk).first() # 不传many默认为,many=False ser = BookSerializers(instance=book) """ <class 'app01.serizlizer.BookSerializers'> ser是BookSerializers的对象 """ print(type(ser)) # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程 return Response(ser.data)
类也是一个对象,一切皆对象。类这个对象也是一个类实例化得到的,这个类就叫做元类。
对象是实例化的得到的,类也是一个对象,BookSerializers这个类也是一个对象,既然是对象,那么也会有类,类的类就叫元类。
所以,类也是由一个了类产生的,产生这个类的类就叫元类。
对象的产生过程有__new__
所控制
注意:对象的实例化过程,__new__
在__init__
之前执行,__new__
是产生空对象,__init__
给对象赋值。
ListSerializer就是一个列表,列表套了一个个的Serializer。[ser1,ser2,ser3...]
。
# 查询单条 class BookDetailView(APIView): def get(self, request, pk): book = Books.objects.filter(pk=pk).first() # 不传many默认为,many=False ser = BookSerializers(instance=book) """ <class 'app01.serizlizer.BookSerializers'> ser是BookSerializers的对象 """ print(type(ser)) """ BookSerializers(instance=<Books: Books object (1)>): id = IntegerField(label='ID', read_only=True) name = CharField(max_length=32) price = IntegerField() publish = PrimaryKeyRelatedField(allow_null=True, queryset=Publish.objects.all(), required=False) """ print(ser) # 这一步才是真正将book_list转为字典并返回。调ser.data才是真正的序列化过程 return Response(ser.data)