Django的分页功能

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 }}&nbsp&nbsp&nbsp&nbsp
                年龄:{{ student.s_age }}
            </li>
        {% endfor %}

    </ul>
	
    <ul class="pagination pagination-lg">
    # 判断是否有上一页
    {% if currPage.has_previous %}
        <li><a href="{% url 'getStudentsPage' currPage.previous_page_number %}">&laquo;</a></li>
    {% else %}
        <li class="disabled"><a href="#">&laquo;</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 %}">&raquo;</a></li>
    {% else %}
        <li class="disabled"><a href="#">&raquo;</a></li>
    {% endif %}

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

猜你喜欢

转载自blog.csdn.net/EverXerxes/article/details/82777299
今日推荐