Django快速分页在后端(视图函数中)在前端(html模板中)

分页

在web开发中,对大量的商品进行分页显示,是常见的需求,django对分页直接提供了现成的函数,让我们的开发更为快速便捷...

动图_Django快速分页

在后端(视图函数中)

from django.shortcuts import render
from .models import ShowMyComputer
# 引入方法
from django.core.paginator import Paginator
# Create your views here.

def show(request, page_id):

    # 获取需要分页的对象集合
    all_goods = ShowMyComputer.objects.all()

    # 创建分页对象
    paginator = Paginator(all_goods, 3)

    # 根据当前页码,确定返回的数据
    current_page = paginator.page(page_id)

    # 保证前端取到的"页数"为整型
    page_id = int(page_id)


    return render(request, 'computer/list.html', locals())

在前端(html模板中)

<body>
    {# 展示当前页面的数据 #}
    {% for goods in current_page %}
    <div class="my_goods">

        <div class="goods_image">       
            ![图片占位](/static/{{ goods.goods_image }})
        </div>
        
        <br>
        
        <div class="goods_name">{{ goods.goods_name }}</div>

    </div>

    {% endfor %}


    <div class="page_num">

    {# 判断'上一页'是否存在,如果存在则保留`上一页`标签 ,反之则不显示`上一页`标签 #}
    {% if current_page.has_previous %}

        <a href="{% url 'computer:show' current_page.previous_page_number %}">上一页</a>

    {% endif %}


    {# 确定分页数量 #}

    {% for index in paginator.page_range %}

        {# 如果页码与当前页面相符,则添加红色背景 #}
    {% if page_id == index %}
        <a href= "{% url 'computer:show' index %}" style="background-color: red" >{{ index }}</a>
        {# 如果页面与当前页面不符,则正常显示 #}
    {% else %}
        <a href="{% url 'computer:show' index %}" >{{ index }}</a>
    {% endif %}

    {% endfor %}

    {# 判断'下一页'是否存在,如果存在则保留`下一页`标签 ,反之则不显示`下一页`标签 #}
    {% if current_page.has_next%}

        <a href="{% url 'computer:show' current_page.next_page_number %}">下一页</a>

    {% endif %}


    </div>

</body>

文章涉及到的资源我会通过百度网盘分享,为便于管理,资源整合到一张独立的帖子,链接如下: http://www.jianshu.com/p/4f28e1ae08b1

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏肖洒的博客

【爬虫】(一):爬网页、爬图片、自动登录

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。 用于从WWW服务器传输超文本到本地浏览器的传送协议。

1413
来自专栏尾尾部落

微信公众号爬虫 微信公众号爬虫

爬取步骤: 1. get_cookie.py用selenium登陆,获取cookie,其中你需要勾选“记住”选项,还需要微信扫描二维码,确定顺利登陆

2323
来自专栏架构师之路

一张图看懂单机部署+集群部署+热备部署与磁盘阵列(RAID)

一张图看懂单机部署+集群部署+热备部署与磁盘阵列(RAID) ? 单机部署 集群部署 热备部署 单机部署(stand-alone):只有一个饮水机提供服务,服...

3485
来自专栏Python攻城狮

Python网络爬虫(二)- urllib爬虫案例 urllib的爬虫案例-通过最原始的爬虫方式

代码操作(一)爬取百度贴吧数据(GET方式爬取数据 ,这里爬取的是战狼2贴吧的html)

752
来自专栏GIS讲堂

jquery自定义插件实现分页效果

下面说说实现思路。实现分页效果,数据的加载可以分为两种情况:一次性获取数据和动态获取数据。一次性获取数据就是将所要查询的数据一次性查询出来,在前台去做分页...

1272
来自专栏九彩拼盘的叨叨叨

BOM 操作写法示例

1262
来自专栏Hadoop实操

如何在HP dl380 Gen9服务器上安装Redhat 7.2并配置软RAID

在《如何为服务器硬盘配置RAID或JBOD模式》一文中提到,单张RAID卡无法同时启用RAID模式和JBOD模式,即无法混合管理,如果RAID卡为所有硬盘配置了...

1.7K3
来自专栏PHP实战技术

php+mysql实现分页代码

mysql+php实现分页 数据库设计,如图 ? <?php /** * 1.获取页数 */ $page = empty($_GET['p'])?1:($_GE...

3797
来自专栏技术博文

php curl获取网页内容乱码和获取不到内容的解决方法

1.如果用curl请求网页,多方网页使用了gzip压缩,那么获取的内容将有可能为乱码。 解决方法 $url = 'http://www.du52.com'; $...

4847
来自专栏我是攻城师

理解Java里面的读写锁

在Java高级的并发包里面还有一个有用的同步工具,就是 ReadWriteLock读写锁,它本身是一个接口,注意这个接口并没有继承Lock接口,因为的它的功能比...

992

扫码关注云+社区

领取腾讯云代金券