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%}