Python Django 简单分页的实现代码解析


Posted in Python onAugust 21, 2019

这篇文章主要介绍了Python Django 简单分页的实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

models.py:

from django.db import models
class Book(models.Model):
  title = models.CharField(max_length=32)
  def __str__(self):
    return self.title
  class Meta:
    db_table = "books"

批量创建 106 条数据

import os
if __name__ == '__main__':
  os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite3.settings")
  import django
  django.setup()
  from app01 import models
  # 106 个书籍对象
  objs = [models.Book(title="《Python 的故事第{}版》".format(i)) for i in range(116)]
  # 在数据库中批量创建, 10 次一提交
  models.Book.objects.bulk_create(objs, 10)

views.py:

from django.shortcuts import render
from app01 import models 
def book_list(request):
  # 从 URL 中取参数
  page_num = request.GET.get("page")
  print(page_num, type(page_num))
  page_num = int(page_num)
 
  # 定义两个变量保存数据从哪儿取到哪儿
  data_start = (page_num-1)*10
  data_end = page_num*10
 
  # 书籍总数
  total_count = models.Book.objects.all().count()
 
  # 每一页显示多少条数据
  per_page = 10
 
  # 总共需要多少页码来显示
  total_page, m = divmod(total_count, per_page)
  if m:
    total_page += 1 
  all_book = models.Book.objects.all()[data_start:data_end]
 
  # 拼接 html 的分页代码
  html_list = []
  for i in range(1, total_page+1):
    tmp = '<li><a href="/book_list/?page={0}" rel="external nofollow" >{0}</a></li>'.format(i)
    html_list.append(tmp) 
  page_html = "".join(html_list) 
  return render(request, "book_list.html", {"books": all_book, "page_html": page_html})

book_list.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>书籍列表</title>
  <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" rel="external nofollow" >
</head>
<body> 
<div class="container"> 
  <table class="table table-bordered">
    <thead>
    <tr>
      <th>序号</th>
      <th>id</th>
      <th>书名</th>
    </tr>
    </thead>
    <tbody>
    {% for book in books %}
      <tr>
        <td>{{ forloop.counter }}</td>
        <td>{{ book.id }}</td>
        <td>{{ book.title }}</td>
      </tr>
    {% endfor %} 
    </tbody>
  </table> 
  <nav aria-label="Page navigation">
    <ul class="pagination">
      {{ page_html|safe }}
    </ul>
  </nav> 
</div>
</body>
</html>

运行结果:

Python Django 简单分页的实现代码解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
pyqt5实现登录界面的模板
May 30 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python二元算术运算常用方法解析
Sep 15 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 #Python
python爬虫豆瓣网的模拟登录实现
Aug 21 #Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 #Python
详解Python利用random生成一个列表内的随机数
Aug 21 #Python
Python Django 封装分页成通用的模块详解
Aug 21 #Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 #Python
python numpy 常用随机数的产生方法的实现
Aug 21 #Python
You might like
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
如何查找和删除数据库中的重复数据
2014/11/05 面试题
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
实习单位接收函
2014/01/11 职场文书
自主招生推荐信范文
2014/05/10 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
岁月神偷观后感
2015/06/11 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android