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中处理字符串之islower()方法的使用简介
May 19 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
python 调用钉钉机器人的方法
Feb 20 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
tensorflow的计算图总结
Jan 12 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Python中flatten( ),matrix.A用法说明
Jul 05 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
python如何用matplotlib创建三维图表
Jan 26 Python
详解PyTorch模型保存与加载
Apr 28 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
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python和php哪个更适合写爬虫
2020/06/22 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
师范生自我鉴定范文
2013/10/05 职场文书
大学生学习生活的自我评价
2013/11/01 职场文书
师范院校学生自荐信范文
2013/12/27 职场文书
任命书格式
2014/06/05 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
投资合作意向书范本
2015/05/08 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
vue 自定义组件添加原生事件
2022/04/21 Vue.js
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技