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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SeanCheney的专栏

Scrapy随机切换用户代理User-Agent

使用fake-useragent: https://github.com/hellysmile/fake-useragent 这是一个可以随机切换访问头的插...

437120
来自专栏Python爬虫与算法进阶

Python最假的库:Faker

前辈在review的时候说怎么这么复杂,Python中有一个专门生成各类假数据的库:Faker,你去了解下。

27240
来自专栏程序员宝库

为什么浏览器的用户代理字符串以 Mozilla 开头?

为什么浏览器的用户代理字符串(user-agent string)以 Mozilla 开头? ? 最早流行的浏览器是 NCSA Mosaic,它称自己为 NCS...

35680
来自专栏互联网开发者交流社区

SQL基础分页存储过程(案例一)

19350
来自专栏cs

python文件下载

29980
来自专栏iOSer成长记录

iOS-关于Cell上Button点击效果

25430
来自专栏hbbliyong

Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)

现在领导又要增加功能,需要分页的时候,每页显示N条信息。由于是每个页面都要改,所有需要声明了一个扩展类代码如下: // Copyright : 欧蓝德畅电子技术...

29180
来自专栏iOS技术

iOS 触摸事件响应链

本文讨论iOS事件中的触摸事件及其响应链,至于加速计事件和远程控制事件不在本文的讨论范畴。

45170
来自专栏林德熙的博客

win10 uwp 如何让WebView标识win10手机

本文主要:如何让WebView访问的网页识别为手机. 当然这句话我说不好,换个,如何让 WebView 识别为手机。 上面两句话都是错的,因为是服务器识别,不是...

9820
来自专栏杂七杂八

urllib模拟浏览器登录

使用build_opener()修改报头 由于urlopen()不支持一些HTTP的高级功能,所以,我们如果要修改报头,可以使用urllib.request.b...

34950

扫码关注云+社区

领取腾讯云代金券