django的分页器Paginator 从django中导入类


Posted in Python onJuly 25, 2019

先创建表,然后生成批量数据。

在models文件里

from django.db import models

# Create your models here.


class Book(models.Model):

  name = models.CharField(max_length=32)
  price = models.DecimalField(max_digits=5,decimal_places=2)

然后执行python manage.py makemigrations ,python migrate 生成数据库。把数据库从左边拉到右边,

在url里创建showBooks视图函数API,

from django.conf.urls import url
from django.contrib import admin

from app01 import views
urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^index/', views.index),
  url(r'^ajaxHandle/', views.ajaxHandle),
  url(r'^showBooks/', views.showBooks),-------

在views文件中创建showBooks 函数,批量导入数据,用bulk_create()

从django中导入Paginstor类,用对象调用方法,

def showBooks(requests):

  #批量导入数据bulk_create()方法

  # book_list=[]#里面存一个个对象
  # for i in range(100):
  #   book_list.append(Book(name="book%s"%i,price=2+i+2))
  #
  # Book.objects.bulk_create(book_list)

  book_list_all = Book.objects.all()

  #分页器Paginator,是导入了一个类,在用实列出来的对象调用方法,
  from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger

  #book_list_all 是要被分页的对象,第二个参数,是每页显示的条数
  p = Paginator(book_list_all,20)# p就是每页的对象,
  p.count #数据总数
  p.num_pages #总页数
  p.page_range#[1,2,3,4,5],得到页码,动态生成,

  page_num = requests.GET.get("page")#以get的方法从url地址中获取
  #如果输错了页码,
  try:
    book_list = p.page(page_num)#括号里的是页数,显示指定页码的数据,动态显示数据,所以不能写死了

  except PageNotAnInteger:#如果输入页码错误,就显示第一页
    book_list = p.page(1)
  except EmptyPage:#如果超过了页码范围,就把最后的页码显示出来,
    book_list = p.page(p.num_pages)

  return render(requests,"showBooks.html",locals())

数据库生成数据

django的分页器Paginator 从django中导入类

在templates 创建showBooks页面,把数据库数据渲染出来

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.css' %}" rel="external nofollow" >


</head>
<body>

<ul>
{#request 也可以在这里渲染出来#}
  {% for book in book_list %}
    <li>{{ book.id }}     {{ book.name }}     {{ book.price }}</li>
  {% endfor %}


</ul>


   <ul class="pagination">
     {% if book_list.has_previous %}
    <li><a href="/showBooks/?page={{ book_list.previous_page_number }}" rel="external nofollow" >上一页</a></li> ---直接使用方法,上一页,
    {% else %}
    <li class="disabled"><a href="#" rel="external nofollow" rel="external nofollow" >上一页</a></li>
     {% endif %}

   {% for num in p.page_range %}
    <li><a href="/showBooks/?page={{ num }}" rel="external nofollow" >{{ num }}</a></li>
   {% endfor %}

    {% if book_list.has_next %}
    <li><a href="/showBooks/?page={{ book_list.next_page_number }}" rel="external nofollow" >下一页</a></li>
   {% else %}
    <li class="disabled"><a href="#" rel="external nofollow" rel="external nofollow" >下一页</a></li>
    {% endif %}

   </ul>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python爬取个性签名的方法
Jun 17 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python远程连接MySQL数据库
Apr 19 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Django 构建模板form表单的两种方法
Jun 14 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 #Python
Python交互式图形编程的实现
Jul 25 #Python
python之pexpect实现自动交互的例子
Jul 25 #Python
Python使用lambda表达式对字典排序操作示例
Jul 25 #Python
浅析Python 引号、注释、字符串
Jul 25 #Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 #Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 #Python
You might like
php+mysql查询优化简单实例
2015/01/13 PHP
php中namespace及use用法分析
2016/12/06 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
js 字符串转换成数字的三种方法
2013/03/23 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python中进程和线程的区别详解
2017/10/29 Python
python绘制地震散点图
2019/06/18 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
活动总结格式范文
2014/04/26 职场文书
管理建议书范文
2014/05/13 职场文书
五水共治一句话承诺
2014/05/30 职场文书
小学数学课题方案
2014/06/15 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
紫日观后感
2015/06/05 职场文书
清明扫墓感想
2015/08/11 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL
利用Apache Common将java对象池化的问题
2022/06/16 Servers