Django的分页实在是太方便了,哈哈哈,直接上代码,你一看就会了
#views.py
def blogindex_html(request):
from django.core.paginator import Paginator
from django.core.paginator import EmptyPage
from django.core.paginator import PageNotAnInteger
limit = 10 # 每页显示的记录条数
question = Question.objects.all().order_by('-question_date')
paginator = Paginator(question,limit)#实例化一个分页对象
page = request.GET.get('page') #获取到页码
try:
q = paginator.page(page) #获取某夜对应的记录
except PageNotAnInteger: #如果页码不是个整数
q = paginator.page(1)#取第一页的记录
except EmptyPage:#如果页码太大
q = paginator.page(paginator.num_pages)#取最后一页的记录
return render(request,'blogindex.html',{'q':q })
#前端
<table class="table table-inbox table-hover">
<tbody>
{% for i in q.object_list %}
<tr class="unread">
<td class="inbox-small-cells">
<input type="checkbox" class="mail-checkbox">
</td>
<td class="inbox-small-cells"><i class="icon-star"></i></td>
<td class="view-message dont-show">{{ i.question_author }}</td>
<td class="view-message ">{{ i.question_title }}</td>
<td class="view-message inbox-small-cells">{{ i.question_category }}</i></td>
<td class="view-message text-right">{{ i.question_date }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div style="float:right">
<p>
{# q.paginator.page_range 这个函数返回包含一个所有页码的range对象,也就是说 range(1, q.paginator.num_pages + 1) #}
{% for page_number in q.paginator.page_range %}
{% ifequal page_number q.number %}
<button type="button" class="btn btn-primary btn-sm active"> {{ page_number }} </button>
{% else %}
<a href="?page={{ page_number }}"> <button type="button" class="btn btn-default btn-sm">{{ page_number }} </button></a>
{% endifequal %}
{% endfor %}
</p>
</div>
关于分页的官方内容:http://python.usyiyi.cn/translate/django_182/topics/pagination.html
还有另一种分页的显示方式感觉太难看了就不写了,想看的话到这里面去看:https://mozillazg.github.io/2013/01/django-pagination-by-use-paginator.html