在Django当中已经帮我们完成了关于分页的方式
可以看原文档
https://github.com/jamespacileo/django-pure-pagination
我们需要先下载django-pure-pagination
直接用pip install django-pure-pagination
配置
在我们的Django配置文档当中的INSTALLED_APPS加入
INSTALLED_APPS = [
'pure_pagination',
]
在进行配置详细数据
PAGINATION_SETTINGS = {
'PAGE_RANGE_DISPLAYED':10,
'MARGIN_PAGES_DISPLAYED':2,
'SHOW_FIRST_PAGE_WHEN_INVALID':True
}
PAGE_RANGE_DISPLAYED:显示相邻的数据这里设置的是10个
MARGIN_PAGES_DISPLAYED:显示头尾的几个数据这里是两个
SHOW_FIRST_PAGE_WHEN_INVALID:当你访问网页不想出现404页面,就可以将他设置成True
完成分页(后台)
try:
#这里可以获取那一页的数据
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
#这里需要传入一个对象,来查看数据量
p = Paginator(objects, per_page=5,request=request)#这里的per_page是设置的显示数据量
people = p.page(page)
#将数据给到前台
return render_to_response('index.html', {
'people': people,
}
完成分页(前台)
可以直接用它帮我们写好的方式
{{ people.render }}
people是后台传过来的数据
我们也可以使用自己的样式
{% if people.has_previous %}
{# 在这里可以用自己的样式来进行替换#}
<a href="?{{ people.previous_page_number.querystring }}" class="prev">‹‹ {% trans "previous" %}</a>
{#这里是显示上一页的标签#}
{% else %}
{#这里是当没有上一页该如何显示#}
<span class="disabled prev">‹‹ {% trans "previous" %}</span>
{% endif %}
{% for page in people.pages %}
{% if page %}
{% ifequal page people.number %}
{#显示当前被选中的页面#}
<span class="current page">{{ page }}</span>
{% else %}
{#这里是没有选中时如何显示#}
<a href="?{{ page.querystring }}" class="page">{{ page }}</a>
{% endifequal %}
{% else %}
{#显示省略号#}
...
{% endif %}
{% endfor %}
{% if people.has_next %}
{#显示下一页#}
<a href="?{{ people.next_page_number.querystring }}" class="next">{% trans "next" %} ››</a>
{% else %}
{#当没有下一页该如何显示#}
<span class="disabled next">{% trans "next" %} ››</span>
{% endif %}
浙公网安备 33010602011771号