最近因为在做分页时遇到的问题很多,页浪费了好多时间,所以记录一下。以后如遇到可用省去不必要的麻烦

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实现自定义数据格式的分页与搜索相关推荐

  1. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...

    python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...

  2. layui 自定义request_layui中使用自定义数据格式对数据表格进行渲染

    1.引入 2.页面代码 编辑 删除 layui.use('table', function(){ var table = layui.table; table.render({ elem: '[lay ...

  3. Unity3D 自定义数据格式

    最近在研究Unity3d, 总的来说感觉还不错, 就是感觉潜规则有点多.............. 数据格式支持有点少, 需要自定义数据格式, 研究了下, 模型, 骨骼, 已经搞定... 转载于:ht ...

  4. Django(模板语言-自定义filter和simple_tag)

    filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. 1.在当前app中创建templatetags模块(包:带__init_ ...

  5. django调用python脚本返回_讲解django rest framework 自定义返回方法

    讲解django rest framework 自定义返回方法 大家在用Django Rest Framework的时候会发现默认继承后,增删改查的返回信息都是一段data,这是因为我实际是状态码和信 ...

  6. php 添加样式,PHP实现可自定义样式的分页类

    本文实例为大家分享了PHP实现可自定义样式的分页类,供大家参考,具体内容如下 //namespace Component; /** * 2016-3-27 * @author ankang */ cl ...

  7. 百度地图 自定义结果面板+分页+图层标注(标注点+搜索)

    百度地图 自定义结果面板+分页+图层标注(标注点+搜索) 示例一: <html> <head><meta http-equiv="Content-Type&qu ...

  8. 自定义thinkphp6的分页样式

    自定义thinkphp6的分页样式 需要到框架中的\vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php 文件下修改 根据自己需要的 ...

  9. SpringJPA中多表关联查询并返回自定义dto带分页

    如题:要实现SpringJPA中多表关联查询并返回自定义dto带分页功能,使用SpringJAP的查询时暂时没找到合适的方法,也不想强制去给实体间做关联,于是有如下代码: 一.建立自己需要返回的dto ...

最新文章

  1. solr多core的处理
  2. 解决nginx重启“var/run/nginx/nginx.pid no such file or directory问题
  3. 2011年全国软件大赛模拟题及参考答案(Java本科组)
  4. Shell中的特殊字符
  5. 原生js实现tab栏切换效果
  6. Code Blocks 10 05的安装及使用
  7. distinct group by一起用_用ggplot2来画带有对角线的热图。
  8. jasmine-JavaScript单元测试工具
  9. 《我的互联网方法论》读书笔记
  10. 欲说还休,欲说还休,却道天凉好个秋
  11. 微软新的邮件帐户域名 @live.com和@windowslive.com
  12. jquery广告浮动插件
  13. 力扣刷题 DAY_82 贪心
  14. 三秒让你学会公私网地址转换(NAT)
  15. Java月薪24k_一位月薪1.2w的北漂程序员真实生活!
  16. 第23次CSP认证(202109)
  17. 使用GORM操作数据库
  18. tirm php,PHP中trim 会导致乱码的原因
  19. JAVA练习257-三维形体投影面积
  20. 与开源cynthia同源的团队协作平台effevo(effevo.com)免费开放

热门文章

  1. I/O设备的编址方式(统一编址,独立编址)
  2. Ubuntu设置开机启动
  3. 【精辟】socket阻塞与非阻塞,同步与异步,select,pool,epool
  4. FZOJβ #31.字符串
  5. 18.linux日志收集数据到hdfs上面
  6. 201312-5 I’m stuck!
  7. 【Scikit-Learn 中文文档】支持向量机 - 监督学习 - 用户指南 | ApacheCN
  8. 将sql 结果导出到文件
  9. [AngularJS] 理解AngularJS Directive中的Scope
  10. 3D Game Programming with directx 11 习题答案 8.3