日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Django restframwork实现自定义数据格式的分页与搜索

發(fā)布時(shí)間:2025/3/17 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django restframwork实现自定义数据格式的分页与搜索 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近因?yàn)樵谧龇猪?yè)時(shí)遇到的問題很多,頁(yè)浪費(fèi)了好多時(shí)間,所以記錄一下。以后如遇到可用省去不必要的麻煩

restframwork中的官方文檔對(duì)分頁(yè)和搜索頁(yè)進(jìn)行了詳細(xì)的介紹,但是我公司需要的return的json數(shù)據(jù)格式進(jìn)行分層。所以吧,一個(gè)很簡(jiǎn)單的東西,搞的頭皮發(fā)嘛,看源碼之類的,費(fèi)時(shí),重點(diǎn)是看不太懂,但最后還是參考源碼,重寫了response方法。

直接上代碼了

url(r'^show_workPublished',views.Show_workPublishedView.as_view(),name='show_workPublished'),

serializer.py

class Show_workPublishedModelSerialiazer(serializers.ModelSerializer):class Meta:model = Upload_filep#fields = ("id","name","title","img")fields = ["id","name","title","img",'address','add_time']

自定義分頁(yè)pagination.py

from rest_framework.pagination import PageNumberPaginationclass PNPageination(PageNumberPagination):page_size = 6 # 每頁(yè)顯示2條page_query_param = 'currentPage' # 當(dāng)前頁(yè)page_size_query_param = 'page_size' # 每頁(yè)顯示

view.py

class Show_workPublishedView(generics.ListAPIView):queryset = Upload_filep.objects.all().order_by('id').reverse()pagination_class = PNPageinationserializer_class = Show_workPublishedModelSerialiazer#模糊搜索def get_queryset(self):name = self.request.GET.get('keyword')if name is not None:return self.queryset.filter(Q(name__icontains=name) | Q(title__icontains=name))return self.querysetdef get(self,request,*args,**kwargs):list = self.get_queryset()#list = Upload_filep.objects.all()list_nums = list.count()try:page = request.GET.get('currentPage',1)except PageNotAnInteger:page = 1limit = int(request.GET.get('limit',6))p = Paginator(list,limit)lists = p.page(page)#lists_serializer = Show_workPublishedModelSerialiazer(lists,many=True)lists_serializer = self.get_serializer(lists,many=True)ret = {"result": True,"msg": "successful","secure": False,"returnCode": "200","data": {"list":{"listData":lists_serializer.data,"page_size":limit, #每頁(yè)顯示兩個(gè)"totalCount":list_nums , # 一共有多少數(shù)據(jù)"totalPage": (list_nums//limit if list_nums%limit==0 else list_nums//limit+1) , # 一共有多少頁(yè) a-b if a>b else a+b"currentPage": page , # 當(dāng)前頁(yè)數(shù) },},}return Response(ret) View Code

?

到這里就能搞定分頁(yè)和搜索。restframwork分裝的比較多,但有的東西還是得參考源碼重寫方法。

轉(zhuǎn)載于:https://www.cnblogs.com/shaojiafeng/p/9681652.html

總結(jié)

以上是生活随笔為你收集整理的Django restframwork实现自定义数据格式的分页与搜索的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。