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. 破解idea2019版本至2089年(windows系统)

    1.首先必须安装idea,然后找到安装目录下的bin目录下面 2.编辑俩个以.exe.vmoptions的文件(俩个文件的最后一行都得这样写) 3.重新打开idea,找到help下面的Register ...

  2. CF1285 --- Dr. Evil Underscores

    CF1285 --- Dr. Evil Underscores 题干 Today as a friendship gift, Bakry gave Badawy \(n\) integers \(a_ ...

  3. 【Linux常见命令】route命令

    route - show / manipulate the IP routing table route命令用于显示和操作IP路由表. route命令用来显示并设置Linux内核中的网络路由表,rou ...

  4. Jenkins+Jmeter+Ant   生成测试报告

    <?xml version="1.0" encoding="UTF-8"?> <project name="wms_test&quo ...

  5. 自动安装带nginx_upstream_check_module模块的Nginx脚本

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/bin/bash    useradd -s /sbin/no ...

  6. codeforce 1311 D. Three Integers

    In one move, you can add +1 or −1 to any of these integers (i.e. increase or decrease any number by ...

  7. Codeforce 1311A Add Odd or Subtract Even

    Add Odd or Subtract Even time limit per test2 seconds memory limit per test256 megabytes inputstanda ...

  8. vue获取当前时间 实时刷新

    需求:获取当前系统时间,在页面上展示 年月日 时分秒 ,并且实时刷新,和系统时间保持一致 第一步:在deta 里面声明两个变量第二步:把时间调用写在created() 生命周期里面,进入页面就需要调用 ...

  9. vue 之 slot插槽

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题这里就点出来了,父组件决定插槽显示或不显示以及怎样显示,子组件决定 ...

  10. 【BIM】BIMFACE中实现电梯实时动效

    背景 在运维场景中,电梯作为运维环节重要的一部分是不可获缺的,如果能够在三维场景中,将逼真的电梯效果,包括外观.运行状态等表现出来,无疑是产品的一大亮点.本文将从无到有介绍如何在bimface中实现逼 ...