django实现分页功能

1:首先建立表,并且插入数据。我在这里插入了17条数据

表有了,数据有了,我们要把他显示在前端,这个是我们

def getstupage(request,pagenum):
#pagenum是我们前端传的数据,意思是你要哪一页的数据
#stall是我们获得的数据库内的所有数据
    stall=Student.objects.all()
    #分页,每一页最多4条数据,pageInator是几页,但是它的表现形式如下
    pageInator=Paginator(stall,4)
    print(pageInator)
    # < django.core.paginator.Paginatorobjectat0x7fb0cd800cf8 >
#currage是获取你传的那一页的相关数据,然后确定Page ? of 4
    currpage=pageInator.page(pagenum)
    print(currpage)
    # < Page 1 of 4 >
#获得?页的数据列表 
    studentspage=currpage.object_list
    print(studentspage)
    #< QuerySet[ < Student: Studentobject >, < Student: Studentobject >, < Student: Studentobject >, < Student: Studentobject >] >
#总共的页数的范围,便于前端for循环
    print(pageInator.page_range)
    #range(1, 5)
    data={
        "currectnum":int(pagenum),
        "studentspage": studentspage,
        "pagerange":pageInator.page_range,
        "currpage":currpage

    }
    return render(request,"student_page.html",context=data)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
	<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
	<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
	<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
#这是数据的列表,四条每组,前端网页请求几页,就显示第几页的
<ul>
    {% for foo in studentspage %}
        <li>
        {{ foo.s_name }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ foo.s_age }}
        </li>

{% endfor %}
</ul>



#以下用到bootstrap框架,是页数显示功能
#这是页数的前部分,表示后退页数
<ul class="pagination">
#Page ? of 4 这个?也就是你传过来的如果存在前面的页数,就可以点击之后超链接传值到对应的函数。
{% if currpage.has_previous  %}

    <li><a href="{% url 'day08:getstupage' currpage.previous_page_number %}">&laquo;</a></li>
#如果没有前面的页数,就按钮能用
    {% else %}
    <li class="disabled"><a href="#">&laquo;</a></li>
{% endif %}



#这个是中间部分也就是点击那个跳转到哪个,如果你点击的那个循环出来的次数=你传的值 就蓝化那个按钮
上面已经实现浏览器输入数据请求跳转到哪一页,所以在这里我们实现请求后把相应的按钮蓝化。
并且还有一个功能就是当你点击某个按钮的时候,会请求到后端,然后经过处理把不该蓝化的不蓝化显示,
请求哪个,蓝化哪个,其实只要你请求,他们两个一定是相等的。只有请求才有currentnum。所以就蓝化

    {% for foo in pagerange %}

        {% ifequal foo currectnum  %}

            <li class="active"><a href="{% url 'day08:getstupage' foo %}">{{foo}}</a> </li>
            {% else %}
                   <li ><a href="{% url 'day08:getstupage' foo %}">{{foo}}</a> </li>
        {% endifequal %}

    {% endfor %}





#这个跟第一个开头的功能是一样的
{% if currpage.has_next  %}
<li ><a href="{% url 'day08:getstupage' currpage.next_page_number %}">&laquo;</a></li>
    {% else %}
<li class="disabled"><a href="#">&raquo;</a></li>
{% endif %}



</ul>
</body>
</html>

url大家自己配置好啦!

在此附上效果图

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值