1、设计模型准备数据
class Student(models.Model):
s_name = models.CharField(max_length=50)
s_age = models.ImageField(default=16)
2、展示数据
# 在数据库中自行添加数据
def getStudentsPage(request):
students = Student.objects.all()
data = {
'studentsAll':students,
}
return render(request,'student_page.html',context=data)
# 将服务器中的数据展示出来
3、分页功能
1、将数据集合分成多页数据
paginator = Paginator(数据集合,每页数据的数量)
2、获得指定页数据
currPage = paginator.page(页码)
数据集合 = currPage.object_list
3、示例
def getStudentsPage(request,pagenumber):
students = Student.objects.all()
pageInator =Paginator(students,4)
currPage = pageInator.page(pagenumber)
studentsPage = currPage.object_list
data = {
'studentsPage':studentsPage,
'page_range':pageInator.page_range,
'currPagepagenumber':int(pagenumber),
'currPage':currPage,
}
return render(request,'student_page.html',context=data)
4、html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页</title>
# 导入jquery
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
# 导入css
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
# 导入js
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
# 遍历学生
<ul>
{% for student in studentsPage %}
<li>
姓名:{{ student.s_name }}    
年龄:{{ student.s_age }}
</li>
{% endfor %}
</ul>
<ul class="pagination pagination-lg">
# 判断是否有上一页
{% if currPage.has_previous %}
<li><a href="{% url 'getStudentsPage' currPage.previous_page_number %}">«</a></li>
{% else %}
<li class="disabled"><a href="#">«</a></li>
{% endif %}
# 遍历展示页面
{% for i in page_range %}
{% ifequal i currPagepagenumber %}
# i 与当前页相等,设置显示效果
<li class="active"><a href="{% url 'getStudentsPage' i %}">{{ i }}</a>
{% else %}
<li><a href="{% url 'getStudentsPage' i %}">{{ i }}</a>
{% endifequal %}
{% endfor %}
# 判断是否有后一页
{% if currPage.has_next %}
<li><a href="{% url 'getStudentsPage' currPage.next_page_number %}">»</a></li>
{% else %}
<li class="disabled"><a href="#">»</a></li>
{% endif %}
</ul>
</body>
</html>