1:序列化获取数据的接口设计

1:分页获取序列化数据 2:是个能传参数的接口
class Society(APIView): def post(self, request):
keywords = str(request.data.get("keywords"))
data = {}
try:
s_data = models.Society.objects.filter(name__contains=keywords).order_by('id') # 模糊查询 pg = PageNumberPagination()
pg.max_page_size = 200
pg.page_size_query_param = "size"
pager_roles = pg.paginate_queryset(queryset=s_data, request=request, view=self)
ser = PagerSerialiser(instance=pager_roles, many=True)
data["code"] = 200
data["count"] = len(s_data) # 获取总数量
data["data"] = ser.data
return Response(data)
except Exception as e:
data["code"] = 444
data["message"] = "请求异常"
return JsonResponse(data)

2:前端代码的设计

1:创建2个关键词keywords_raw,keywords,当没有使用搜索功能时,我们传上去的是keywords,它是空值,所以接口会返回给我们所有的数据,分页请求的keywords也是空值,所以这个时候的请求数据是所有的

2:当我们在输入框上输入了关键词keywords_raw,点击时,这个时候将keywords_raw的值赋值给keywords,这样子去请求就可以做到搜索关键词后的分页点击是属于搜索关键词的数据

代码:

HTML:
<input type="text" class="form-control" placeholder="输入关键词查找社团" v-model="keywords_raw"> <button @click="search"> 搜索</button> JS: data:{
keywords_raw: "",
keywords: "",
} // 钩子函数渲染数据
created() {
       // 数据渲染
axios.post('/society/get/?page=1&size=6', {
keywords: this.keywords # 上传的参数是keywords 这个时候还是空值,请求的数据是所有的
}).then(response => {
this.totals = parseInt(response.data.count)
response.data.data.some((item, i) => {
this.society_data.unshift({
societHead: item.head,
societUser: item.user,
societName: item.name,
societMember: item.member,
societTime: item.time.substring(0, 10),
pk: item.id,
})
})
}).catch(error => {
alert("请重新登录")
window.location.href = '/login/'
})
} // 搜索:
// search
search() {
if ( this.keywords_raw == "") {
alert("输入框不能为空")
} else {
this.society_data =[]
// 请求的时候赋值给keywords
              this.keywords =this.keyword_raw # 直接同步两个参数
axios.post('/society/get/?page=1&size=6', {
keywords: this.keywords_raw
}).then(response => {
this.totals = parseInt(response.data.count)
response.data.data.some((item, i) => {
this.society_data.unshift({
societHead: item.head,
societUser: item.user,
societName: item.name,
societMember: item.member,
societTime: item.time.substring(0, 10),
pk: item.id, })
})
}).catch(error => {
console.log(error) })
}
} // 分页
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) { this.society_data = [],
axios.post('/society/get/?page=' + val + '&size=6', {
keywords: this.keywords # 上传的是参数是关键词
}).then(response => {
this.totals = parseInt(response.data.count)
response.data.data.some((item, i) => {
this.society_data.unshift({
societHead: item.head,
societUser: item.user,
societName: item.name,
societMember: item.member,
societTime: item.time.substring(0, 10),
pk: item.id, })
})
}).catch(error => {
console.log(error) })
},

3:效果图

【Django+Element UI】使用一个接口文件,搞定分页获取数据,模糊查询后分页获取数据的更多相关文章

  1. 一个PHP文件搞定微信H5支付

     / 更新于 2018-07-02 / 8 条评论 过年期间也坚持要撸码啊接着给博客除草,在这个小除夕是情人节的一天,祝大家新年快乐,情人节能够顺利脱单~~~ 回归正题,这篇文章介绍一下微信H5支付, ...

  2. 转:C4项目中验证用户登录一个特性就搞定

    转:C4项目中验证用户登录一个特性就搞定   在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用 ...

  3. 企业sudo权限规划详解 (实测一个堆命令搞定)

    简述问题:         随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...

  4. 编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内

    查看本章节 查看作业目录 需求说明: 在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字"[ 来自新华社 ]",保存到一个新的 txt 文件内 实现思路: 创建 Sa ...

  5. django实战(二)--带多字段模糊查询的分页(也是不容易)

    上节我们实现了分页功能,这节我们要实现对模糊查询后的结果进行分页.(引入了bootstrap框架) urls.py from django.urls import path from . import ...

  6. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  7. java 查询路径中所有文件夹和文件的名称,支持文件名模糊查询

    java 查询路径中所有文件夹和文件的名称,支持文件名模糊查询 有时候我们遇到需要查询服务器或者本机某个路径下有哪些文件?或者根据文件名称模糊搜索文件,那么就可以使用本方法:可以获取某个路径下所有文件 ...

  8. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  9. Django+element ui前后端不分离的博客程序

    最近把去年写的一个烂尾博客(使用了django1.11和element ui)又重新完善了一下,修改了样式和增加了新功能 github链接:https://github.com/ngauerh/Nag ...

随机推荐

  1. mysql插入数字都变成2147483647的解决方法

    2147483647是int类型的最大值,所以插入11位的数字都会变成2147483647,把int改为bigint即可

  2. uniqid用法

    uniqid():妙用就是以当前时间微妙为单位,返回的唯一ID 我们可以用到密码加密和接口加密的功能上,比如 $salt = substr(uniqid(rand()), -6);//截取倒数6位$p ...

  3. 深入理解Java枚举

    深入理解Java枚举 重新认识Java枚举 老实说,挺羞愧的,这么久了,一直不知道Java枚举的本质是啥,虽然也在用,但是真不知道它的底层是个啥样的 直到2020年4月28日的晚上20点左右,我才真的 ...

  4. myod实验(选做)

    myod实验 实验任务 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Makefile ...

  5. 数据包的抓取[tcpdump]的应用

    [root@server ~]# yum install tcpdump [root@server ~]# yum install wireshark 1.默认情况下,直接启动tcpdump将监视第一 ...

  6. MutationObserver 监听 DOM 树变化

    MutationObserver 是用于代替 MutationEvents 作为观察 DOM 树结构发生变化时,做出相应处理的 API .为什么要使用 MutationObserver 去代替 Mut ...

  7. 2018年要学习的10大Python Web框架

    通过为开发人员提供应用程序开发结构,框架使开发人员的生活更轻松.他们自动执行通用解决方案,缩短开发时间,并允许开发人员更多地关注应用程序逻辑而不是常规元素. 在本文中,我们分享了我们自己的前十大Pyt ...

  8. Ceph 12.2.0 实践osd 智能分组功能

    以前我们需要对ssd和hdd进行分组的时候,需要大量的修改crush map,然后绑定不同的存储池到不同的 crush 树上面,现在这个逻辑简化了很多.以上是官方宣传听起来很不错等到12.2.0稳定版 ...

  9. Linux下创建 code diff 和 合并 patch

    Linux 下经常需要给别人提供 patch 以及合 patch,这时需要用到 Linux 的 diff 和 patch 命令. 1. diff 命令 diff 命令常用来比较文件.目录,也可以用来制 ...

  10. C语言编程入门题目--No.10

    题目:打印楼梯,同时在楼梯上方打印两个笑脸. 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数. 2.程序源代码: #include "stdio.h" ...