zoukankan      html  css  js  c++  java
  • django 分页功能

    一、安装django-prue-pagination

    在pycharm中 File==》settings==》Project:项目名===》Project Interpreter==》点击“+”===》搜django-prue-pagination===》左下角Intall Package

    二、在sttings.py中的相关代码:

    .....
    
    #注册pure_pagination
    INSTALLED_APPS = [
        .......    
        'pure_pagination',
    ]
    
    ......
    #追加pure_pagination配置代码
    PAGINATION_SETTINGS={
        'PAGE_RANGE_DISPLAYED':10,
        'MARGIN_PAGES_DISPLAYED':2,
        'SHOW_FIRST_PAGE_WHEN_INVALID':True,
    }

    三、在views.py中添加分页代码:

    ......
    from .models import ShopProfile
    ......
    from pure_pagination import Paginator,EmptyPage,PageNotAnInteger
    
    ......
    
    class ShopList(View):
        """商铺列表"""
        def get(self,request):
            shops=ShopProfile.objects.all()
            # 每页五个
            p = Paginator(shops, 5)
            page = request.GET.get('page', 1)
            try:
                shops= p.page(int(page))
            except PageNotAnInteger:
                shops=p.page(1)
            return render(request,'shops_list.html',{'all_shops':shops})

    四、在shop-list.html中的代码:

    ......
    <!--收到后台分页后 返回的数据,然后进行遍历-->
    <div id="portfoliolist">
    
            {% for shop in all_shops.object_list %}   <!--关键代码,一定注意这里!要遍历的不是all_shops而是all_object_list,这里是一个巨坑!不然会报错:

    'Page' object is not iterable
    --> <div class="portfolio shop" data-cat="shop"> <div class="portfolio-wrapper"> <img src="{% static 'logo/shop.jpg' %}" alt="" /> <div class="label"> <div class="label-text"><a class="text-title">{{ shop.name }}</a><span class="text-category">{{ shop.shop_sn }}</span></div> <div class="label-bg"></div> </div> </div> </div> {% endfor %} </div> <!--分页的代码--> <div class="fen-page"> <ul class="pagelist pagination"> {% if all_shops.has_previous %} <li class="long"> <a href="?{{ all_shops.previous_page_number.querystring }}" class="prev">上一页</a> </li> {% endif %} {% for page in all_shops.pages %} {% if page %} {% ifequal page all_shops.number %} <li class="active"> <a href="?{{ page.querystring }}">{{ page }}</a> </li> {% else %} <li> <a href="?{{ page.querystring }}" class="page">{{ page }}</a> </li> {% endifequal %} {% else %} <li class="none"><a href="">...</a></li> {% endif %} {% endfor %} {% if all_shops.has_next %} <li class="long"> <a href="?{{ all_shops.next_page_number.querystring }}">下一页</a> </li> {% endif %} </ul> </div>
  • 相关阅读:
    基于ASP.NET的comet简单实现
    常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例
    关于Application.Lock和Lock(obj)
    asp.net 母版页使用详解--转
    ASP.NET 全局变量和页面间传值方法
    黑帽大会2014:10个酷炫的黑客工具
    python之高性能网络编程并发框架eventlet实例
    eCos中的线程与同步
    Ubuntu12.04 下修改Apache端口号
    PHP 之mysql空字符串问题
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/8855608.html
Copyright © 2011-2022 走看看