不使用dif视图
#在下面的这些代码中,存在很多代码重复 from rest_framework.views import APIView from app01.models import * from app01.mySer import * from django.http import JsonResponse class PublishView(APIView): def get(self, request): #获取所有数据 publish_list = Publish.objects.all() bs = PublishSerializers(publish_list, many=True) #PublishSerializers自己写的序列化 return JsonResponse(bs.data,safe=False) def post(self, request): #添加纪录 # 添加一条数据 print(request.data) bs = PublishSerializers(data=request.data) if bs.is_valid(): bs.save() # 生成记录 return JsonResponse(bs.data,safe=False) else: return JsonResponse(bs.errors,safe=False) class PublishDetailView(APIView): def get(self, request, pk): #获取单条数据 publish_obj = Publish.objects.filter(pk=pk).first() bs = PublishSerializers(publish_obj, many=False) return JsonResponse(bs.data,safe=False) def put(self, request, pk): #修改单条 publish_obj = Publish.objects.filter(pk=pk).first() bs = PublishSerializers(data=request.data, instance=publish_obj) if bs.is_valid(): bs.save() # update return JsonResponse(bs.data) else: return JsonResponse(bs.errors) def delete(self, request, pk): #删除一条数据 Publish.objects.filter(pk=pk).delete() return JsonResponse("")
原文:https://www.cnblogs.com/pdun/p/11257059.html