1.解释器组件源码分析
2.基于CBV的接口设计
1)、django循环queryset对象构造数组套字典方式
2)、django.serializers.serialize方式
3)、restframework序列化组件方式
###################### 基于CBV的接口设计####################### # class CourseView(View): # # def get(self,request): # # course_list=Course.objects.all() # ret=[] # for course in course_list: # ret.append({ # "title":course.title, # "desc":course.desc, # }) # # # return HttpResponse(json.dumps(ret,ensure_ascii=False)) ###################### 基于DRF的接口设计####################### # from rest_framework.views import APIView # from rest_framework.response import Response # from rest_framework.parsers import JSONParser,FormParser,FileUploadParser # from app01.models import Course # # # # from rest_framework import serializers # class CourseSerializer(serializers.Serializer): # title=serializers.CharField(max_length=32) # desc=serializers.CharField(max_length=32) # # # class CourseView(APIView): # # def get(self,request): # ''' # 查看所有数据 # 方式1: # ret=[] # for course in course_list: # ret.append({ # "title":course.title, # "desc":course.desc, # }) # # json.dumps(ret,ensure_ascii=False) # # 方式2: # from django.core.serializers import serialize # Django的序列化组件 # data=serialize("json",course_list) # print("data",data) # # 方式3: # restframework序列化组件 # :param request: # :return: # ''' # # course_list=Course.objects.all() # # cs=CourseSerializer(course_list,many=True) # print("====>",cs.data) # 序列化接口 # # ''' # # [OrderedDict([('title', 'python'), ('desc', 'python非常好')]), OrderedDict([('title', 'linux'), ('desc', 'linux好')]), OrderedDict([('title', 'go'), ('desc', 'gogogo')])] # # ''' # # return Response(cs.data) # # # def post(self,request): # # print(request.data) # 静态方法:解析数据工作 # cs=CourseSerializer(data=request.data) # if cs.is_valid(): # 校验 # # # Course.objects.create(**request.data) # # return Response(cs.data) # 序列化数据 # else: # return Response(cs.errors) # 序列化错误信息 # ##########################################################################
3.restframework序列化组件
1.serializers.Serializer