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,把相关的图片,将其他文件路径都改过来
把表格里面的数据循环输出
完善一下前端的页面
<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/
打开数据库,数据成功插入
最后显示网页数据:
输入 127.0.0.0;8000/list_student/