方法1
class Test(APIView): authentication_classes = [SessionAuthentication, JSONWebTokenAuthentication] permission_classes = [IsAuthenticated] def get(self, request, *args, **kwargs): result = { "code": 200, "message": "成功", "data": "" } page = int(request.GET.get("page", 1)) # 页码 limit = int(request.GET.get("limit", 10)) # 每页展示数量 name = request.GET.get("name", "") # 搜索 if name == "": value_list = list( models.Test.objects.all().order_by("-id").values()[(page - 1) * 10: limit * page]) else: value_list = list( models.Test.objects.filter(name__icontains=name).order_by("-id").values()[ (page - 1) * 10: limit * page]) res = { "list": value_list, "total": models.Test.objects.count() } result["data"] = res return JsonResponse(result)
<!--more-->
方法2class TestViewSet(ModelViewSet): ''' { "code": "200", "msg": "succss", "data": [] } ''' authentication_classes = [JSONWebTokenAuthentication] # JWT验证 permission_classes = [IsCasbinVerify] queryset = models.Test.objects.all() serializer_class = Test1Serializer def list(self, request, *args, **kwargs): res = { "code": 200, "msg": "success", "data": [] } try: queryset = models.Test.objects.filter(name__icontains=request.GET.get("name", "")) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True) res["data"] = serializer.data except Exception as e: res["code"] = -1 res["msg"] = e.args[0] return JsonResponse(res)方法3
class TestViewSet(ModelViewSet): authentication_classes = [JSONWebTokenAuthentication] # JWT验证 permission_classes = [IsCasbinVerify] queryset = models.Test.objects.all() serializer_class = TestSerializer def list(self, request, *args, **kwargs): res = { "code": 200, "msg": "success", "data": [] } try: contact_list = list(models.Test.objects.filter(name__contains=request.GET.get("name", "")).order_by("-id").values("id","name")) paginator = Paginator(contact_list, 20) # 默认每页显示20条,也可用前端传递size来自定义默认每页数据量 page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # 如果请求的页数不是整数,返回第一页。 contacts = paginator.page(1) except EmptyPage: # 如果请求的页数不在合法的页数范围内,返回结果的最后一页。 contacts = paginator.page(paginator.num_pages) res["data"] = { "total": paginator.count, "list": contacts.object_list, } # return JsonResponse(res) except Exception as e: res["code"] = -1 res["msg"] = e.args[0] return JsonResponse(res)
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did164242