views.py
from mysite.models import student from django.core.paginator import Paginator from django.core.paginator import EmptyPage from django.core.paginator import PageNotAnInteger # Create your views here. def getdata(request): limit = 5 # 每頁顯示的筆數 students = student.objects.all() paginator = Paginator(students, limit) page = request.GET.get('page') # 獲取頁碼 try: students = paginator.page(page) # 獲取該頁的資料 except PageNotAnInteger: # 如果頁碼不是個整數 students = paginator.page(1) # 取第一頁的資料 except EmptyPage: # 如果頁碼過大,没有相對的資料 students = paginator.page(paginator.num_pages) # 取最後一頁的資料 return render(request,'getdata.html', {'students': students})
getdata.html
{% for s in students.object_list %} <tr> <th scope="row">{{s.id}}</th> <td>{{s.cName}}</td> <td>{{s.cSex}}</td> <td>{{s.cBirthday}}</td> <td>{{s.cEmail}}</td> <td>{{s.cPhone}}</td> <td>{{s.cAddr}}</td> </tr> {% endfor %}
<p> {# students.paginator.page_range 這個函式返回包含一個所有頁碼數的 range 對象 #} {# 即 range(1, students.paginator.num_pages + 1) #} <ul class="pagination"> {% if students.has_previous %} {#如果有上一頁就創建#} <li class="page-item"><a class="page-link" href="?page={{ students.previous_page_number }}">上一頁</a></li> {% endif %} {% for page_number in students.paginator.page_range %} {% ifequal page_number students.number %} <li class="page-item"><a class="page-link active" href="">{{ page_number }}</a></li> {% else %} <li class="page-item"><a class="page-link" href="?page={{ page_number }}">{{ page_number }}</a></li> {% endifequal %} {% endfor %} {% if students.has_next %} {#如果有下一頁就創建#} <li class="page-item"><a class="page-link" href="?page={{ students.next_page_number }}">下一頁</a></li> {% endif %} </ul> </p>