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

 更新时间:2019年08月21日 11:01:23   作者:Sch01aR#  
这篇文章主要介绍了Python Django 简单分页的实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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 画三维图像 曲面图和散点图的示例

    python 画三维图像 曲面图和散点图的示例

    今天小编就为大家分享一篇python 画三维图像 曲面图和散点图的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python将string转换到float的实例方法

    Python将string转换到float的实例方法

    在本篇文章中小编给大家分享的是关于Python将string转换到float的实例方法以及相关知识点,需要的朋友们参考下。
    2019-07-07
  • python实现126邮箱发送邮件

    python实现126邮箱发送邮件

    这篇文章主要为大家详细介绍了python实现126邮箱发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 将keras的h5模型转换为tensorflow的pb模型操作

    将keras的h5模型转换为tensorflow的pb模型操作

    这篇文章主要介绍了将keras的h5模型转换为tensorflow的pb模型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python中如何实现链式调用

    python中如何实现链式调用

    这篇文章主要介绍了python中如何实现链式调用,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • python实现的登录与提交表单数据功能示例

    python实现的登录与提交表单数据功能示例

    这篇文章主要介绍了python实现的登录与提交表单数据功能,结合实例形式分析了Python表单登录相关的请求与响应操作实现技巧,需要的朋友可以参考下
    2019-09-09
  • 使用Python解析FineReport模板数据集

    使用Python解析FineReport模板数据集

    这篇文章主要为大家详细介绍了如何使用Python解析FineReport模板数据集,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解下
    2023-12-12
  • python 读取文件并替换字段的实例

    python 读取文件并替换字段的实例

    今天小编就为大家分享一篇python 读取文件并替换字段的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 关于python多进程中的常用方法详解

    关于python多进程中的常用方法详解

    这篇文章主要介绍了关于python多进程中的常用方法详解,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程,需要的朋友可以参考下
    2023-07-07
  • jupyter 实现notebook中显示完整的行和列

    jupyter 实现notebook中显示完整的行和列

    这篇文章主要介绍了jupyter 实现notebook中显示完整的行和列,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论