Django分页基本思路

1、分页规律

页码 每页条数 每页数据
1 10 0-10
2 10 10-20
n 10 (n-1)*pageSize-n*pageSize

2.django基本分页实例

首先是视图views.py文件

def list_students(request):
    if request.method == "GET":
        page = request.GET.get("page") #获取页码
        page_size = request.GET.get("page_size") #获取每页条数
        if not page: #设置默认页码为1
            page = 1
        if not page_size: #设置默认每页5
            page_size = 5
        page = int(page) #防止url直接传过来字符串的页码
        page_size = int(page_size) #防止url直接传过来字符串的页码
        start = (page-1)*page_size #页码数据开头的索引
        end = page*page_size  #页码数据结尾的索引
    students = Student.objects.order_by("id") #排序查询
    lenth = len(students) #获取长度
    page_num = lenth/page_size #计算页码范围
    if page_num != int(page_num): #判断页码是否为整数
        page_num += 1
    page_num = int(page_num)
    page_range = range(1,page_num+1) #页码范围
    data = students[start:end] #截取数据
    return render(request,"stu_list.html",{“data”:data,”page_range”:page_range})

配置对应的路由文件

from Student.views import list_student
urlpatterns+=[
    path('list_student/',list_students),
 
]

前端界面 stu_list.html

加载static,把相关的图片,将其他文件路径都改过来

Django分页基本思路

Django分页基本思路

把表格里面的数据循环输出

Django分页基本思路

Django分页基本思路

完善一下前端的页面

<ul class="pagination">
    <li class="paginate_button page-item active"><a href="/stu_list/?page={{ page|add:-1 }}" class="page-link">上一页</a></li>
        {% for page in page_range %}
            <li class="paginate_button page-item active"><a href="/stu_list/?page={{ page }}" class="page-link">{{ page }}</a></li>
        {% endfor %}
        <li class="paginate_button page-item active"><a href="/stu_list/?page={{ page|add:1 }}" class="page-link">下一页</a></li>
</ul>

向数据库内添加数据,可以通过views.py文件循环插入100条水库

import random
def register_student_text(request):
    for i in range(100):
        name = '张%s'%i,
        age = 18
        gender = random.choice(['男','女'])
        classes = random.randint(1000,2000)
        grade = random.choice(["python","java","c","php","linux"])


        s = Students()
        s.name = name
        s.age = age
        s.gender = gender
        s.classes = classes
        s.grade = grade

        s.save()
    return render(request,'register_student.html',locals())

不要忘记添加路由

from Student.views import list_student
urlpatterns+=[
    path('list_student/',list_students),
    path('reg_stu_text/',register_student_text),
     
]

开启项目,浏览器输入 127.0.0.0:8000/reg_stu_text/

打开数据库,数据成功插入

Django分页基本思路

最后显示网页数据:

输入 127.0.0.0;8000/list_student/

Django分页基本思路