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实现自定义数据格式的分页与搜索相关推荐
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...
python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...
- layui 自定义request_layui中使用自定义数据格式对数据表格进行渲染
1.引入 2.页面代码 编辑 删除 layui.use('table', function(){ var table = layui.table; table.render({ elem: '[lay ...
- Unity3D 自定义数据格式
最近在研究Unity3d, 总的来说感觉还不错, 就是感觉潜规则有点多.............. 数据格式支持有点少, 需要自定义数据格式, 研究了下, 模型, 骨骼, 已经搞定... 转载于:ht ...
- Django(模板语言-自定义filter和simple_tag)
filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. 1.在当前app中创建templatetags模块(包:带__init_ ...
- django调用python脚本返回_讲解django rest framework 自定义返回方法
讲解django rest framework 自定义返回方法 大家在用Django Rest Framework的时候会发现默认继承后,增删改查的返回信息都是一段data,这是因为我实际是状态码和信 ...
- php 添加样式,PHP实现可自定义样式的分页类
本文实例为大家分享了PHP实现可自定义样式的分页类,供大家参考,具体内容如下 //namespace Component; /** * 2016-3-27 * @author ankang */ cl ...
- 百度地图 自定义结果面板+分页+图层标注(标注点+搜索)
百度地图 自定义结果面板+分页+图层标注(标注点+搜索) 示例一: <html> <head><meta http-equiv="Content-Type&qu ...
- 自定义thinkphp6的分页样式
自定义thinkphp6的分页样式 需要到框架中的\vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php 文件下修改 根据自己需要的 ...
- SpringJPA中多表关联查询并返回自定义dto带分页
如题:要实现SpringJPA中多表关联查询并返回自定义dto带分页功能,使用SpringJAP的查询时暂时没找到合适的方法,也不想强制去给实体间做关联,于是有如下代码: 一.建立自己需要返回的dto ...
最新文章
- solr多core的处理
- 解决nginx重启“var/run/nginx/nginx.pid no such file or directory问题
- 2011年全国软件大赛模拟题及参考答案(Java本科组)
- Shell中的特殊字符
- 原生js实现tab栏切换效果
- Code Blocks 10 05的安装及使用
- distinct group by一起用_用ggplot2来画带有对角线的热图。
- jasmine-JavaScript单元测试工具
- 《我的互联网方法论》读书笔记
- 欲说还休,欲说还休,却道天凉好个秋
- 微软新的邮件帐户域名 @live.com和@windowslive.com
- jquery广告浮动插件
- 力扣刷题 DAY_82 贪心
- 三秒让你学会公私网地址转换(NAT)
- Java月薪24k_一位月薪1.2w的北漂程序员真实生活!
- 第23次CSP认证(202109)
- 使用GORM操作数据库
- tirm php,PHP中trim 会导致乱码的原因
- JAVA练习257-三维形体投影面积
- 与开源cynthia同源的团队协作平台effevo(effevo.com)免费开放
热门文章
- I/O设备的编址方式(统一编址,独立编址)
- Ubuntu设置开机启动
- 【精辟】socket阻塞与非阻塞,同步与异步,select,pool,epool
- FZOJβ #31.字符串
- 18.linux日志收集数据到hdfs上面
- 201312-5 I’m stuck!
- 【Scikit-Learn 中文文档】支持向量机 - 监督学习 - 用户指南 | ApacheCN
- 将sql 结果导出到文件
- [AngularJS] 理解AngularJS Directive中的Scope
- 3D Game Programming with directx 11 习题答案 8.3