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

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

在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类,用对象调用方法,

 1 def showBooks(requests):
 2
 3     #批量导入数据bulk_create()方法
 4
 5     # book_list=[]#里面存一个个对象
 6     # for i in range(100):
 7     #     book_list.append(Book(name="book%s"%i,price=2+i+2))
 8     #
 9     # Book.objects.bulk_create(book_list)
10
11     book_list_all = Book.objects.all()
12
13     #分页器Paginator,是导入了一个类,在用实列出来的对象调用方法,
14     from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
15
16     #book_list_all 是要被分页的对象,第二个参数,是每页显示的条数
17     p = Paginator(book_list_all,20)# p就是每页的对象,
18     p.count  #数据总数
19     p.num_pages  #总页数
20     p.page_range#[1,2,3,4,5],得到页码,动态生成,
21
22     page_num = requests.GET.get("page")#以get的方法从url地址中获取
23     #如果输错了页码,
24     try:
25         book_list = p.page(page_num)#括号里的是页数,显示指定页码的数据,动态显示数据,所以不能写死了
26
27     except PageNotAnInteger:#如果输入页码错误,就显示第一页
28         book_list = p.page(1)
29     except EmptyPage:#如果超过了页码范围,就把最后的页码显示出来,
30         book_list = p.page(p.num_pages)
31
32     return render(requests,"showBooks.html",locals())

数据库生成数据

在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‘ %}">

</head>
<body>

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

</ul>

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

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

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

      </ul>

</body>

</html>
时间: 2024-10-06 07:27:45

django 的分页器Paginator ,从django中导入类的相关文章

使用Django实现分页器功能

要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页显示10条 >>> from django.core.paginator import Paginator#导入Paginator模块 >>> list1=[i for i in range(0,150)]#使用列表生成器生成一个包含150个数字的列表 >>&g

Django实现分页器功能

要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页显示10条 1 >>> from django.core.paginator import Paginator#导入Paginator模块 2 >>> list1=[i for i in range(0,150)]#使用列表生成器生成一个包含150个数字的列表 3 >

Django组件-分页器

一丶Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here. from app01.models import * from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def index(request): ''' 批量导入数据: Booklist=[] fo

Django分页器(paginator)组件

Django分页器(paginator)组件 from django.core.paginator import Paginator from django.core.paginator import Paginator 先拿到分页器对象 paginator = Paginator(book_list,3) 第一个参数:对象列表,第二个参数:每页显示的条数 paginator.count 总条数 paginator.num_pages 总页数 paginator.page_range 页码数列表

django模板分页器

对于嘉宾管理页面来说,当前需要一个分页功能,一场发布会需要由几千位嘉宾参加,如果将所有的嘉宾信息不做分页地显示在页面上,不仅页面的加载速度会受到严重影响,而且页面一次显示几千条甚至几万条并不方便查看,Django提供了Paginator类来实现分页功能,分页功能略为复杂,首先进入Django的shell模式,练习Paginator类的基本使用,请在嘉宾表至少添加5名嘉宾信息,以便接下来的练习,sign_guest表里已创建5条数据 from django.core.paginator impor

【django之分页器】

一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页 print("count:", paginator.count) # 数据总数print("num_pages", paginator.num_pages) # 总页数print("page_range", paginator.page_range) # 页码的列表 page1 = pag

16 Django 自定义分页器

目录 前言 自定义分页器 前言 当用户输入URL时,我在前端页面显示的数据,假设有1万条数据,用脑子想一想不可能将这一万条数据全部都展示在当前一个页面上去给用户直接看把,这样虽然后端方便了,但是如果你是开发一个上线的项目,用户体验贼差,那这个项目岂不是费了,所以我们在浏览别人的网站的时候,就好比博客园来说把,它是每一页都展示那规定的几条数据,当用户想看其他的数据,需要点击其他页,查看其它页的数据 下面我们就来看一下分页器怎么用 自定义分页器 说明:django帮我们封装了分页器的代码方法,我们只

Django之分页器组件与自定义

Django之分页器组件 class Pagination(object): def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): """ 封装分页相关数据 :param current_page: 当前页 :param all_count: 数据库中的数据总条数 :param per_page_num: 每页显示的数据条数 :param pager_count: 最多显示的页码个数

django之分页器

views.py def index(request): # 效率低,每次都要insert一下 # for i in range(100): # Book.objects.create( # title=f'book_{i}', # price=i * i' # ) # 批量导入,一条insert后面对应100条数据 # book_list = [] # for i in range(100): # book = Book(title=f'book_{i}', price=i * i) # bo