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 相关文章推荐
记录Django开发心得
Jul 16 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
Python引用计数操作示例
Aug 23 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
python实现的config文件读写功能示例
Sep 24 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
Python3列表List入门知识附实例
Feb 09 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
python中的3种定义类方法
Nov 27 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
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python tkinter事件高级用法实例
2018/01/31 Python
python实现简单遗传算法
2018/03/19 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
Python和Bash结合在一起的方法
2020/11/13 Python
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
nohup的用法
2012/11/26 面试题
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python