转载自: https://blog.csdn.net/sinat_14977477/article/details/81434954
使用django-pure-pagination实现django的分页功能
安装
pip install django-pure-pagination
- 添加到setting中:
INSTALLED_APPS = ( ... 'pure_pagination', )
设置
-
在setting文件中添加代码:
PAGINATION_SETTINGS = { 'PAGE_RANGE_DISPLAYED': 10, # 显示当前页面的相邻的页面数 'MARGIN_PAGES_DISPLAYED': 2, # 显示的第一页和最后一页相邻的页数 'SHOW_FIRST_PAGE_WHEN_INVALID': True, # 无效页面时,显示第一页而不是404页面
-
views中的代码:
```
from django.shortcuts import render
from django.views import View
from pure_pagination import Paginator, EmptyPage, PageNotAnIntegerfrom .models import Law class LawlistView(View): def get(self, request): try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 objects = Law.objects.all() p = Paginator(objects, per_page=5, request=request) laws = p.page(page) return render(request, 'zcfg-list.html', { 'laws': laws, }) ```
- templates中的代码:
<nav aria-label="Page navigation"> <ul class="pagination"> {% if laws.has_previous %} <li> <a href="?{{ laws.previous_page_number.querystring }}" aria-label="Previous"> <span aria-hidden="true">上一页</span> </a> </li> {% else %} <li class="disabled"> <a aria-label="Previous"> <span aria-hidden="true">上一页</span> </a> </li> {% endif %} {% for page in laws.pages %} {% if page %} {% ifequal page laws.number %} <li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li> {% else %} <li><a href="?{{ page.querystring }}">{{ page }}</a></li> {% endifequal %} {% else %} ... {% endif %} {% endfor %} {% if laws.has_next %} <li> <a href="?{{ laws.next_page_number.querystring }}" aria-label="Next"> <span aria-hidden="true">下一页</span> </a> </li> {% else %} <li class="disabled"> <a aria-label="Next"> <span aria-hidden="true">下一页</span> </a> </li> {% endif %} </ul>
- templates中的代码: