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 %}
	
	
	
	{% 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}}
{%endfor%}


{% endfor %}

{# 存在上一页 #} {% if bea_list.has_previous %} ``上一页 {% endif %} {# 存在下一页 #} {% if bea_list.has_next %} ``下一页 {% endif %} {%endblock%}

返回显示

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

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

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

参考资料

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%