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中的decode()方法的使用
May 18 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
Python 元类实例解析
Apr 04 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
pytorch 输出中间层特征的实例
Aug 17 Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
Python的形参和实参使用方式
Dec 24 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 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
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
九种原生js动画效果
2015/11/11 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
json跨域调用python的方法详解
2017/01/11 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
怎样在程序里获得一个空指针
2015/01/24 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
linux面试题参考答案(5)
2014/09/01 面试题
博士学位自我鉴定范文
2013/12/26 职场文书
合伙经营协议书
2014/04/18 职场文书
毕业生对母校寄语
2015/02/26 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
幽灵公主观后感
2015/06/09 职场文书
长江七号观后感
2015/06/11 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers