1. 程式人生 > >Django的分頁功能

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>