zoukankan      html  css  js  c++  java
  • 分页操作

    进行分页操作需要先导入分页模块,顺便导入了一些异常的函数,方便处理
    from django.core.paginator importPaginator,PageNotAnInteger,InvalidPage,EmptyPage
    paginator =Paginator(item_list,2)这是分页函数的使用
    def index(request):
    try:
    item_list =Item.objects.all().order_by('-date')
    paginator =Paginator(item_list,2)
    try:
    page = int(request.GET.get('page',1))
    item_list = paginator.page(page) 通过paginator.page来取出page第几页的内容
    except(PageNotAnInteger,InvalidPage,EmptyPage):
    item_list = paginator.page(1)如果有错误就返回第一页的内容
    exceptExceptionas e:
    print e
    return render(request,'index.html',locals())
    对不同的操作捕获不同的异常,先进行了排序,再进行了分页
    分页操作还是有挺多的操作的
    <divclass="page">
    {% if item_list.has_previous %}
    <ahref="?page={{ item_list.previous_page_number }}">上一页</a>
    {% endif %}
    第{{ item_list.number }}页/总共{{ item_list.paginator.num_pages }}页
    {% if item_list.has_next %}
    <ahref="?page={{ item_list.next_page_number }}">下一页
    {% endif %}
    </div>
    当前页面对象添加了paginator后有
    item_list.has_previous  item_list.has_next item_list.next_page_number item_list.numbe这几个属性,或者方法
    paginator有item_list.paginator.num_pages
     
     
     
     
    在views.py里面封装分页代码
    因为函数index和函数archive都有分页代码,所以可以把分页代码分装成一个函数来引用
    def getPage(request,article_list):
    paginator = Paginator(article_list,2)
    try:
    page = int(request.GET.get('page',1))
    article_list = paginator.page(page)
    except (EmptyPage,InvalidPage,PageNotAnInteger):
    article_list = paginator.page(1)
    return article_list
    因为始终是对取出来的内容进行的修改所以就直接返回article_list,在article_list当中,还需要用到request,
    所以这里需要传入request
    archive.html和index.html都有上一页,下一页
    ,所以可以Include提取出来
    新建一个pagination.html把分页的代码直接复制进去,在到相应的位置,以{% include '
    pagination.html' %}代替
    然后发现archive的页面在按下一页后,参数没有传递过去,所以需要一个判断拼接字符串
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    vue cli3 打包到tomcat上报错问题
    前端html转pdf
    原生js上传图片遇到的坑(axios封装)
    vue slot的使用(transform动画)
    vue购物车动画效果
    关于el-select 单选与多选切换的时候报错的解决办法
    vue html属性绑定
    关于element ui滚动条使用
    css3flex布局实现商品列表 水平垂直居中 上下布局
    vue 项目 路由 router.push、 router.replace 和 router.go
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749460.html
Copyright © 2011-2022 走看看