Django-分页器


title: Django-分页器
copyright: true
top: 0
date: 2019-07-13 19:51:34
tags:
categories: WEB 后端框架
permalink:
password:
keywords: Django分页器
description: 使用Django自带的分页器实现分页显示功能。

暑假作业就是老师留来骚扰暑假的老鼠屎,为了保持他们的存在感。可这种存在感就像你吃完正餐终于等到上甜点了,有人偏要往里面洒两滴芥末油.

视图函数

这里的数据模型仍然使用Django学习练手的数据

# coding:utf-8
from .models import Datas
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
from django.http import HttpResponse

def show(request):
    is_login = request.session.get('IS_LOGIN',False)
    if not is_login:
        return render(request, '404.html')

    paginator = Paginator(Datas.objects.all().values(),3)
    # 获取到数据的对象,按照每页5个
    # paginator.count
    # # 获取到的数据的总数
    # paginator.num_pages
    # # 获取的页数
    # paginator.object_list
    # 和 Datas.objects.all() 返回的结果一致
    #------------------------------------#
    # page1 = paginator.page(1)
    # page1.object_list
    # 即 Datas.objects.all() 取第一个结果
    # page1.next_page_number()
    # 获取下一页的页码,如果不存在则会报错
    # page1.previous_page_number
    # 获取上一页的页码,如果不存在则会报错

    page = request.GET.get('page')
    # 获取前端传递过来的page参数
    try:
        beatles_list = paginator.page(page)
        print(beatles_list.object_list)
    except PageNotAnInteger: 
		# 如果 page 参数不为正整数,显示第一页
        beatles_list = paginator.page(1)
    except EmptyPage: 
		# 如果 page 参数为空页,跳到最后一页
        beatles_list = paginator.page(paginator.num_pages)
    return render(request,'show.html',{'bea_list':beatles_list})

前端页面

base.html

 <meta charset="UTF-8">
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>

<title>
{% block title%} {% endblock %}
</title>

<body>
{% block content%}

{% endblock%}
</body>

show.html

{% extends 'base.html'%}
{% block title%} SHOW DATAS {% endblock%}
{% block content%}

    {% for k in bea_list.object_list  %}
        {% for key,value in k.items %}
        {{key}}:{{value}}<br>
        {%endfor%}
        <hr>
        <br><br>
    {% endfor %}

    <br><br>
    {# 存在上一页 #}
    {% if bea_list.has_previous %}
        `<a href="?page={{ bea_list.previous_page_number}}">`上一页</a>
    {% endif %}

    {# 存在下一页 #}
    {% if bea_list.has_next %}
        `<a href="?page={{ bea_list.next_page_number}}">`下一页</a>
    {% endif %}

{%endblock%}

返回显示

还可以直接从html中传递参数到分页器的page中,你可以这么写

<a href='/show?page=1'>CLICK</a>

对应是urls.py中设置好即可

参考资料

欢迎关注公众号:【安全研发】获取更多相关工具,课程,资料分享哦~
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子燕青啦啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值