您的位置:首页 > 编程语言 > Go语言

django 分页功能的实现

2017-06-05 14:53 573 查看
我是参考了这位大神(http://www.cnblogs.com/kongzhagen/p/6640975.html)的文章后自己写的,因为大神的文章中url没有写,另外在写完后页面虽然分页了,但是没有数据显示,那分页了就没什么用了,所以自己弄了下,将这两个问题都搞好了

views 代码:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

columns = Column.objects.all()
articles = Article.objects.all()

def index(request):
cus_list = Article.objects.all()
paginator = Paginator(cus_list, 1)

page = request.GET.get('page')
if page:
article_list = paginator.page(page).object_list
else:
article_list = paginator.page(1).object_list
try:
customer = paginator.page(page)
except PageNotAnInteger:
customer = paginator.page(1)
except EmptyPage:
customer = paginator.page(paginator.num_pages)

return render(request, 'index.html', {'cus_list': customer, 'columns': columns, 'articles': article_list})

中间if语法是显示数据的,paginator.page(page).object_list  表示的是page这一页里面的数据集

try语法是分页功能的实现

html模板:

<nav aria-label="Page navigation">
<ul class="pagination">
{% if cus_list.has_previous %}
<li>
<a href="?page={{ cus_list.previous_page_number }}" aria-label="Previous"><span aria-hidden="true">«</span></a>
</li>
{% endif %}

{% for pg in cus_list.paginator.page_range %}
{% if cus_list.number == pg %}
<li class="active"><a href="?page={{ pg }}">{{ pg }}</a></li>
{% else %}
<li><a href="?page={{ pg }}">{{ pg }}</a></li>
{% endif %}
{% endfor %}
{% if cus_list.has_next %}
<li>
<a href="?page={{ cus_list.next_page_number }}" aria-label="Next"><span aria-hidden="true">»</span></a></li>
{% endif %}
</ul>
</nav>

至于数据显示的模板自己写吧,很简单的

app下面的urls:

url(r'^$', views.index, name='index'),

这样就可以了。

如果不用Django自带的分页功能的话,也可以自己定义,原理挺简单的,就是查询集的切片操作及在模板中的显示罢了,百度上也有这样的文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: