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 相关文章推荐
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
Python 文件管理实例详解
Nov 10 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
matplotlib作图添加表格实例代码
Jan 23 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
python用tkinter开发的扫雷游戏
Jun 01 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+SqlServer实现分页显示
2006/10/09 PHP
一个取得文件扩展名的函数
2006/10/09 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
php swoft框架实例用法
2020/12/22 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
python如何获取服务器硬件信息
2017/05/11 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python编写猜数字小游戏
2019/10/06 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python中私有属性的定义方式
2020/03/05 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
python中可以声明变量类型吗
2020/06/18 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
行政助理的职责
2013/11/14 职场文书
商场主管竞聘书
2014/03/31 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫