Django的分頁功能
阿新 • • 發佈:2018-11-06
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>