drf视图

不使用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("")
View Code

猜你喜欢

转载自www.cnblogs.com/pdun/p/11257059.html