美文网首页Django学习
Django中paginator学习

Django中paginator学习

作者: brafei | 来源:发表于2019-06-09 21:35 被阅读0次
settings.py
# 自定义参数
EACH_PAGE_OF_NUMBER = 2

进入交互式命令

python manage.py shell

开始学习paginator

>>> from mysite.models import * #将models中的模型导入
>>> products = Product.objects.all() #获取到Product模型中的所有对象
>>> products #查看products中有哪些对象
<QuerySet [<Product: <Media:N3 纳米模板>>, <Product: <Media:超薄框>>, <Product: <Media:智能钢网柜>>]>
>>> content_list = products 
>>> from django.core.paginator import Paginator #导入页码器
>>> from django.conf import settings #从setting中的导入设置的页码数量
>>> settings.EACH_PAGE_OF_NUMBER #查看设置的页码数目是多少
2
>>> paginator = Paginator(content_list, settings.EACH_PAGE_OF_NUMBER) #根据设置的页码数量,获取分页对象
>>> page_num =1 # 设置要看是第几页的内容
>>> page_of_content = paginator.get_page(page_num) #获取到page_num这个对象
>>> page_of_content #查看page_num这个对象
<Page 1 of 2>
>>> page_of_content.object_list #查看设置的这一页中有哪些内容
<QuerySet [<Product: <Media:N3 纳米模板>>, <Product: <Media:超薄框>>]>
>>> page_of_content.number #获取当前所在的页码
1
>>> page_of_content.paginator.num_pages #获取分页器一共分了多少页
2
>>>

PS:视图中加入分页器的函数使用

def get_paginator_list_common_data(req, content_list):
    paginator = Paginator(content_list, settings.EACH_PAGE_OF_NUMBER)
    page_num = req.GET.get('page', 1)  # 获取url的页面参数(GET请求)
    page_of_content = paginator.get_page(page_num)
    current_page_num = page_of_content.number # 获取当前页码
    # 获取当前页码前后各2页的页码范围
    page_range = list(range(max(current_page_num - 2, 1), current_page_num)) + \
                 list(range(current_page_num, min(current_page_num + 2, paginator.num_pages) + 1))
    # 加上省略页码标记
    if page_range[0] - 1 >= 2:
        page_range.insert(0, '...')
    if paginator.num_pages - page_range[-1] >= 2:
        page_range.append('...')
    # 加上首页和尾页
    if page_range[0] != 1:
        page_range.insert(0, 1)
    if page_range[-1] != paginator.num_pages:
        page_range.append(paginator.num_pages)

    context = dict()
    context['content'] = page_of_content.object_list  # 获取这一页有多少个内容,结果是一个类似于列表
    context['page_of_content'] = page_of_content
    context['page_range'] = page_range
    return context

相关文章

  • Django中paginator学习

    进入交互式命令 开始学习paginator PS:视图中加入分页器的函数使用

  • django - 分页

    包:django.core.paginator Paginator对象 Paginator(列表,int):返回分...

  • 2.8 django分页

    Paginator和Page类: Paginator和Page类都是用来做分页的。他们在Django中的路径为dj...

  • Django常用-分页

    分页 Django提供了数据分页的类,这些类被定义在django/core/paginator.py中。 类Pag...

  • 分页

    分页 分页库Paginator的基本语法 django提供了分页的工具,存在于django.core中 Pagin...

  • Django--分页

    知识储备 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中。...

  • django分页实现

    首先导入django自带的分页from django.core.paginator import Paginato...

  • 最浅显易懂的Django系列教程(33)-分页

    分页 在Django中实现分页功能非常简单。因为Django已经内置了两个处理分类的类。分别是Paginator和...

  • 自制paginator.py

    最近在做Django时自己写了一个Paginator来配合Ajax动态获取数据。1、paginator.py vi...

  • 在 Django 中实现分页

    借助 Django 自带的 Paginator[https://docs.djangoproject.com/en...

网友评论

    本文标题:Django中paginator学习

    本文链接:https://www.haomeiwen.com/subject/fwcoxctx.html