Django实现网页分页功能
本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。
创建数据库步骤如下:
1.创建模型,代码如下:
fromdjango.dbimportmodels #Createyourmodelshere. classGoods(models.Model): name=models.CharField(max_length=100) des=models.CharField(max_length=1000) classMeta: db_table='goods'
2.向数据库中添加数据,代码如下:
fromdjango.httpimportHttpResponse
from.modelsimportGoods
importrandom
#Createyourviewshere.
defindex(request):
forxinrange(200):
good=Goods(name='good%s'%x,des='该商品物美价廉,现在只需要{}元'.format(random.randint(10,100)))
good.save()
returnHttpResponse('数据添加成功')
添加之后将代码就可以注释掉了,我们演示的时候再新建一个select接口作为演示界面。
fromdjango.shortcutsimportrender
fromdjango.core.paginatorimportPaginator,PageNotAnInteger,EmptyPage
#Createyourviewshere.
defselect(request):
#查询数据库中的所有数据
good_list=Goods.objects.all()
#值1:所有的数据
#值2:每一页的数据
#值3:当最后一页数据少于n条,将数据并入上一页
paginator=Paginator(good_list,12,3)
try:
#GET请求方式,get()获取指定Key值所对应的value值
#获取index的值,如果没有,则设置使用默认值1
num=request.GET.get('index','1')
#获取第几页
number=paginator.page(num)
exceptPageNotAnInteger:
#如果输入的页码数不是整数,那么显示第一页数据
number=paginator.page(1)
exceptEmptyPage:
number=paginator.page(paginator.num_pages)
#将当前页页码,以及当前页数据传递到index.html
returnrender(request,'index.html',{'page':number,'paginator':paginator})
下面我们在index.html做界面处理,这里是需要用到bootstraps,三个文件如下图所示,前面讲解过。
来到index.html文件,做如下设置:
{%loadstatic%}
淘宝
{%forgoodinpage.object_list%}
{{good.name}}-{{good.des}}
{%endfor%}
{#如果当前页还有上一页#}
{%ifpage.has_previous%}
{#点击a标签,跳转到上一页链接?index为地址后面拼接的参数#}
上一页
{%else%}
{#如果没有上一页,则上一页按钮不可点击#}
上一页
{%endif%}
{%forpage_numberinpaginator.page_range%}
{#获取当前页的页码#}
{%ifpage_number==page.number%}
{#如果是当前页的话,选中#}
{{page_number}}
{%else%}
{{page_number}}
{%endif%}
{%endfor%}
{%ifpage.has_next%}
下一页
{%else%}
下一页
{%endif%}