Django笔记(分页)

Django提供了分页的工具,存在于django.core中

from django.core.paginator import Paginator

Paginator:

对象创建:   Paginator(数据集,每一页数据数)

属性:

count      对象总数

num_pages : 页面总数

page_range:页码列表,从1开始

object_list: 当前页面上所有的数据对象

number:当前也的页码值

paginator:当前page关联的Paginator对象

方法: page(整数):获取一个page对象

Page : 对象获得,通过Paginator的page()方法获得

  has_next()  :判断是否有下一页

  has_previous():判断是否有上一页

  has_other_pages():判断是否有上一页或下一页

  next_page_number():返回下一页的页码

  previous_page_number():返回上一页的页码 

  len():返回当前页的数据的个数

后端

from django.core.paginator import Paginator
from django.http import HttpResponse
from django.shortcuts import render
from dj05app.models import MyUser

# Create your views here.
USER_PEER_PAGE_NUM = 5

def get_user_by_num(req, page_num):
    page_num = int(page_num)
    # 获取全部用户
    users = MyUser.objects.all()
    # 创建分页
    paginator = Paginator(
        users,
        USER_PEER_PAGE_NUM
    )
    # 参数校验
    if page_num <= 0 or page_num > paginator.num_pages:
        return HttpResponse("没数据了")
    # 拿到用户指定页面的那页数据
    page = paginator.page(page_num)
    data = {
        'users': page.object_list
    }
    return render(req, 'users.html', data)

前端

<ul>
    {% for i in users %}
        <li>{{ i.username }}</li>
    {% endfor %}
</ul>

urls

from django.conf.urls import url
from .views import get_user_by_num

urlpatterns = [
    url(r'^user/(\d+)', get_user_by_num)
]

猜你喜欢

转载自blog.csdn.net/ding_312/article/details/82227737