Django1.11自带分页器paginator的使用方法
本文实例为大家分享了Django1.11自带分页器Django的具体使用方法,供大家参考,具体内容如下
接下来我编写一个views,名classify。
classify,将模拟请求购物网站的分类产品、并分页返回数据。完成如下任务:
1、接受两个参数,type,page。”type”:为请求的购物网站产品类别,如0代表热门。1代表家居<
2、分类找到产品。分页返回。
为了方便将要传递的参数直接加载URL中。如:127.0.0.1:8000/classify/0/1/ 请求的是“type”=0,”page”=1的数据。
URLS
fromdjango.conf.urlsimporturl fromtaobaoimportviews urlpatterns=[ url(r'^classify/(\d+)/(\d+)/$',views.classify), ]
models
“category”:分类,0.代表热门;
classgoods(models.Model): category=models.IntegerField('分类',default=0) goods_id=models.CharField('商品ID',max_length=10) goods_name=models.CharField('商品名',max_length=100,default='') goods_price=models.DecimalField('商品价格',max_digits=10,decimal_places=2) goods_Stock=models.IntegerField('商品库存',default=100) sales_Volume=models.IntegerField('销量',default=0) goods_introduce=models.CharField('商品简介',max_length=250,default='') def__str__(self): returnself.goods_name
views
fromtaobao.modelsimportgoods fromdjango.core.paginatorimportPaginator,PageNotAnInteger,EmptyPage defclassify(req,type,page): #接收从url中传递的两个参数。 context={} context['type']=int(type) iftype=='0': goods_list=goods.objects.order_by('sales_Volume').all() #按销量排序 else: goods_list=goods.objects.all().filter(category=int(type)).order_by('sales_Volume').all() paginator=Paginator(goods_list,8) #把商品分成8个一页。 try: #尝试获取请求的页数的产品信息 goodss=paginator.page(int(page)) #请求页数错误 exceptPageNotAnInteger: goodss=paginator.page(1) exceptEmptyPage: goodss=paginator.page(paginator.num_pages) context['goods']=goodss returnrender(req,'classify.html',context)
html页面classify.html
{%blockcontent%}