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在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python 实现简单的电话本功能
Aug 09 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
Python Socket使用实例
Dec 18 Python
python将字典内容存入mysql实例代码
Jan 18 Python
python通过zabbix api获取主机
Sep 17 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Python-openCV开运算实例
Jul 05 Python
pytorch简介
Nov 11 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
python通过新建环境安装tfx的问题
May 20 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
B2K与车机的中波PK
2021/03/02 无线电
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python使用cPickle模块序列化实例
2014/09/25 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
办理退休介绍信
2014/01/09 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
商业街策划方案
2014/05/31 职场文书
学校开学标语
2014/10/06 职场文书
健康状况证明模板
2014/10/23 职场文书
2015年元旦标语大全
2014/12/09 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android