github地址:
https://github.com/jamespacileo/django-pure-pagination
下载第三方包:
pip install django-pure-pagination
在settings中配置:
INSTALLED_APPS:
'pure_pagination'
sttings:
#分页相关设置
PAGINATION_SETTINGS = {
# 当数据多起来的时候省略号中间显示几页连续的
'PAGE_RANGE_DISPLAYED': 10,
# 当数据多起来的时候省略号前后面显示几页连续的
'MARGIN_PAGES_DISPLAYED': 2,
#页数多起来的时候第一页的链接是否显示来
'SHOW_FIRST_PAGE_WHEN_INVALID': True,
}
前后端不分离:
view:
实例:
class OrgListView(View):
def get(self,request,*args,**kwargs):
#查询所有机构
all_orgs=CourseOrg.objects.all()
# 统计有多少家机构
org_nums=CourseOrg.objects.count()
#查询机构的全部地区
all_citys=City.objects.all()
#分页
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
#per_page 每页显示多少数据,all_orgs:要分页的数据
p = Paginator(all_orgs,per_page=5, request=request)
orgs = p.page(page)
return render(request,"html/org-list.html",{
"all_orgs":orgs,
"org_nums":org_nums,
"all_citys":all_citys,
})
前端:
<div class="pageturn">
<ul class="pagelist">
{% if all_orgs.has_previous %}
<li class="long"><a href="?{{ all_orgs.previous_page_number.querystring }}">上一页</a></li>
{% endif %}
{% for page in all_orgs.pages %}
{% if page %}
{% ifequal page all_orgs.number %}
<li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li>
{% else %}
<li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li>
{% endifequal %}
{% else %}
<li class="none">...</li>
{% endif %}
{% endfor %}
{% if all_orgs.has_next %}
<li class="long"><a href="?{{ all_orgs.next_page_number.querystring }}">下一页</a></li>
{% endif %}
</ul>
</div>