日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django restframwork实现自定义数据格式的分页与搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近因為在做分頁時遇到的問題很多,頁浪費了好多時間,所以記錄一下。以后如遇到可用省去不必要的麻煩

restframwork中的官方文檔對分頁和搜索頁進行了詳細的介紹,但是我公司需要的return的json數據格式進行分層。所以吧,一個很簡單的東西,搞的頭皮發嘛,看源碼之類的,費時,重點是看不太懂,但最后還是參考源碼,重寫了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']

自定義分頁pagination.py

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

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, #每頁顯示兩個"totalCount":list_nums , # 一共有多少數據"totalPage": (list_nums//limit if list_nums%limit==0 else list_nums//limit+1) , # 一共有多少頁 a-b if a>b else a+b"currentPage": page , # 當前頁數 },},}return Response(ret) View Code

?

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

轉載于:https://www.cnblogs.com/shaojiafeng/p/9681652.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。