Django-Ajax分页功能实现

前言

Django框架,ajax分页功能实现,包含MVT三大板块的代码及注释。


前端(T: 模板)

注意: 整个样式用的是Bootstrap,所以使用的时候要引入bootstrap的层叠样式表和JS脚本。

<!--                  表格-->
<table  class="table table-striped"><!--                    表头--><thead><tr><td style="font-weight: bolder"><input type="checkbox" class="box-title"></td><td style="font-weight: bolder">姓名</td><td style="font-weight: bolder">年龄</td><td style="font-weight">性别</td></tr></thead><!--                  表体 由ajax填充内容--><tbody id="generatedTable"></tbody>
</table><!--                   页码-->
<div><ul class="pagination pagination-lg" style="font-weight: bold"><li><a href="#">&laquo;</a></li><li><a onclick="dividePage(this)">1</a></li><li><a onclick="dividePage(this)">2</a></li><li><a onclick="dividePage(this)">3</a></li><li><a onclick="dividePage(this)">4</a></li><li><a onclick="dividePage(this)">5</a></li><li><a onclick="dividePage(this)">6</a></li><li><a onclick="dividePage(this)">7</a></li><li><a onclick="dividePage(this)">8</a></li><li><a href="#">&raquo;</a></li></ul>
</div>

JS:

function dividePage(t) {// 获取页码const page_num = t.innerText;// post请求从后台取数据$.ajax({url: '/excel_generate/divide_page',type: 'post',async: true, // 开启同步data: {'page_num': page_num,},success: function (result) {// 成功回传数据if (result.res === 1) {var str_content = "";// 从后台传回的数据不为空if (result.data.length > 0) {$.each(result.data, function (index, item) {str_content += "<tr><td><input type='checkbox'></td><td>" + item['name'] + "</td><td>" + item['age'] + "</td><td>" + item['sex'] + "</td></tr>"})} // 从后台传回的数据为空 显示此页面没有要显示的数据else {str_content += "<tr><td colSpan='4'>" + "此页面没有要显示的数据" + "</td></tr>";}// 覆盖表体内容$('#generatedTable').html(str_content);}// 数据返回失败else {alert('数据返回失败');}}})
}

后端(V: 视图函数)

from .model import DataModel  # 导入模型类def extractDividePageData(database, page_num):"""从数据库中抽取分页数据"""data = []# 先从数据库中读数据msg_list = list(database.objects.filter(is_display=True))# 将数据变成JSON能解析的格式for msg in msg_list:# 添加到data中data.append({'name': msg.name,'age': msg.age,'sex': msg.sex})# 如果数据库中没有数据if len(msg_list) == 0:return {}# 数据库中有数据else:# 计算总页数(18是每一页数据量)total_page = (len(data) // 18) + 1# 总页数比要请求的页数小if total_page < page_num:return {}# 总页数刚好等于请求的页数elif total_page == page_num:start = 18 + (page_num - 2) * 18return data[start:]# 总页数大于请求的页数else:start = 18 + (page_num - 2) * 18stop = 18 + 18 * (page_num - 1)return data[start:stop]@csrf_exempt
def divide_page(request):"""分页"""page_num = int(request.POST.get('page_num'))# 获取数据, 第一个参数是保存数据的数据库对应的模型类,第二个参数是前端获取到的页码try:page_data = extractDividePageData(DataModel, page_num)except Exception as e:return JsonResponse({'res': 0, 'data': {})else:return JsonResponse({'res': 1, 'data': page_data})

模型类(M)

class DataModel(models.Model):"""模型类"""name = models.CharField(max_length=16)age = models.IntegerField()sex = models.CharField(max_length=4)is_display = models.BooleanField(default=True)

以上。

Python-Django-Ajax分页功能实现相关推荐

  1. Django实现分页功能

    在本节中,我们将介绍 Django 为我们提供的高级模块,通过高级模块的学习,你会感受到 Django 的易用性如此之强,但是同时它又很复杂,所以在学习 Django 这样的重度框架的时候,我们一定要 ...

  2. ajax分页功能实现php,详解AJAX分页效果的简单实现

    最近写一个给用户组添加角色的功能,要求一边是未添加的角色,一边是已添加的角色,还有搜索功能, 点击添加后,ajax保存操作. 本文主要为大家详细介绍了AJAX分页效果的简单实现代码,具有一定的参考价值 ...

  3. python django ajax 逻辑推理_python django初识ajax

    什么是json json是轻量级文本数据交互格式 json独立语言 符合的json对象 ["one", "two", "three"] {& ...

  4. Python Django的分页插件使用示例

  5. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  6. Python django旅游网站

    Python django旅游网站 django旅游推荐.风景推荐.风景展示.旅游景点推荐 技术:Python django 数据库:MySQL 前端:html css js 等 涉及到的功能:登录. ...

  7. Python+django网页设计入门(16):优化设计复用分页代码

    前导课程: Python+django网页设计入门(15):公用模板设计与使用 Python+django网页设计入门(14):使用中间件对抗爬虫 Python+django网页设计入门(13):表单 ...

  8. Python+django网页设计入门(10):分页显示

    前导课程: Python+django网页设计入门(9):自定义反爬虫功能 Python+django网页设计入门(8):网站项目文件夹布局 Python+django网页设计入门(7):常用ORM操 ...

  9. django自带的分页功能

    django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...

最新文章

  1. 安装win10和Linux双系统的个人经验
  2. 通用返回_Springboot项目整合通用mapper
  3. 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
  4. 使用Arduino和超声波传感器实现简单测距
  5. 京东被曝显卡售后不肯维修要原价退款;​IBM发布第一个2纳米芯片;Bootstrap 5.0.0发布|极客头条...
  6. [译]JS闭包:For循环中的setTimeout
  7. matlab习题二,matlab习题二答案.doc
  8. 小米max刷鸿蒙,用了小米Max2,这简直是浪费我一天一夜的时间!
  9. win10下实现bat转exe
  10. Web安全-浅析网页暗链与挂马攻击
  11. day16-正则表达式
  12. 项目实训(十三)安装pun,pun的基础使用和概念
  13. 微信订阅消息(后端)教程
  14. 图片情感分析(1):图像数据预处理
  15. 今天的雨下的大!从早上就开始下了
  16. 洛达1562A空间音频固件(艾创立11月12月+豪锐11月)
  17. mysql入门最全参考笔记
  18. attr_accessor :motherland 相当于attr_reader:motherland; attr_writer :motherland
  19. Mac OS mysql 启动命令
  20. java实现贴吧源码_基于jsp的贴吧系统-JavaEE实现贴吧系统 - java项目源码

热门文章

  1. 用Python进行批量文件整理
  2. JAVA实现简单扫雷游戏
  3. 马尔科夫链怎样用matlab,求助,关于matalab马尔可夫链仿真
  4. Nginx 502错误原因和解决方法
  5. 如何向公众号添加的百度网盘的链接
  6. win7系统卸载完WPS后,office2007图标显示不正常,及每次打开都要进行配置的问题的解决方案
  7. VS系统找不到指定文件怎么解决
  8. react+antd 修改主题色
  9. java画蝴蝶_怎样用java语言编写蝴蝶结
  10. 动态ip地址有什么优缺点!!!