Django自带有分页的两个类,但是用起来没有第三方这个分页模块方便,下面介绍一下django-pure-pagination使用方法。该库基于django.core.pagination,并在这个基础上做了一些改进。
https://github.com/jamespacileo/django-pure-pagination
pip install django-pure-pagination在settings中
INSTALLED_APPS = (
...
'pure_pagination',
)还可以在settings中加入一些分页配置,这里的功能是以10页为节点隐藏
PAGINATION_SETTINGS = {
'PAGE_RANGE_DISPLAYED': 10,
'MARGIN_PAGES_DISPLAYED': 2,
'SHOW_FIRST_PAGE_WHEN_INVALID': True,}viewsdef category(request,pk):
category = get_object_or_404(Category, pk=pk)
list = Article.objects.filter(category=pk).order_by('-update_time')
# 获取当前页, 有则为page,无则默认为1
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
p = Paginator(list, 5, request=request)
lists = p.page(page)
print(lists)
return render(request,'bbs/list.html',locals())其中p = Paginator(list, 5, request=request),中的5为每页展示的数据
模板
{% for item in lists.object_list %}
。。。。。。
{% endfor %}
#分页部分
<div id="pgt" class="bm bw0 pgs cl">
<span id="fd_page_top">
<div class="pg">
{% for page in lists.pages %}
{% if page %}
{% ifequal page lists.number %}
<strong>{{ page }}</strong>
{% else %}
<a href="?{{ page.querystring }}">{{ page }}</a>
{% endifequal %}
{% else %}
<a>....</a>
{% endif %}
{% endfor %}
{% if lists.has_next %}
<a href="?{{ lists.next_page_number.querystring }}" class="nxt">下一页</a>
{% endif %}
</div></span>
{% if lists.has_previous %}
<span class="pgb y" initialized="true"><a href="?{{ lists.previous_page_number.querystring }}">上一页</a></span>
{% endif %}
</div>
</div>
<!--分页部分-->
#其他方法
<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"><a href="">...</a></li>
{% endif %}
{% endfor %}
{% if all_orgs.has_next %}
<li class="long"><a href="?{{ all_orgs.next_page_number.querystring }}">下一页</a></li>
{% endif %}
</ul>
</div>#是否有前一页
page.has_previous #是否有下一页
page.has_next #前一页的页码
page.previous_page_number.querystring #下一页的页码
page.next_page_number_querystring #当前页
page.number #当前页页码
page.querystring
#如果a=b {% ifequal a b %} {% endifequal %}
最终效果
