Django实战——复现网站(页码栏跳转设计)/Day3

主体上的一些跳转基本完成了,最后对于这个网站想实现的是页码跳转,也就是在页面下方的页码栏中可以通过点击页码跳转到我们自己django项目建立起的网页中

这个过程只要就是借助django的分页器paginator ,下面直接上代码

首先需要进行对cd_list视图函数的改变:

def cd_list(request):
    cds = CD.objects.all()
    # 创建 Paginator 对象,每页显示 10 个 CD
    paginator = Paginator(cds, 10)  # 每页显示 10 张 CD

    # 获取当前页面的页码
    page_number = request.GET.get('page')

    # 获取当前页的数据
    page_obj = paginator.get_page(page_number)

    # 将 page_obj 传递给模板
    return render(request, 'music/cd_list.html', {'page_obj': page_obj})

这里对模型更改了之后,记得在cd_list.html中同步一下page_obj的名称 

    <div class="pagination">
                <ul>
                    <!--上一页-->
                    {% if page_obj.has_previous %}
                        <li class="prev-page"><a href="?page={{ page_obj.previous_page_number }}">上一页</a>
                        </li>
                    {% else %}
                        <li class="prev-page disabled">
                            <span>上一页</span>
                        </li>
                    {% endif %}

                    <!--页码部分-->
                    {% for num in page_obj.paginator.page_range %}
                        {% if num == page_obj.number %}
                            <li class="active">
                                <span>{{ num }}</span>
                            </li>
                        {% elif num == 1 or num == page_obj.paginator.num_pages or  num >= page_obj.number|add:'-2' and num <= page_obj.number|add:'2' %}
                            <li>
                                <a href="?page={{ num }}">{{ num }}</a>
                            </li>
                        {% elif num == page_obj.number|add:'-6' %}
                            <li>
                                <span>...</span>
                            </li>
                        {% elif num == page_obj.number|add:'6' %}
                            <li>
                                <span>...</span>
                            </li>
                        {% endif %}
                    {% endfor %}

                    <!--下一页-->
                    {% if page_obj.has_next %}
                        <li class="next-page">
                            <a href="?page={{ page_obj.next_page_number }}">下一页</a>
                        </li>
                    {% else %}
                        <li class="next-page disabled">
                            <span>下一页</span>
                        </li>
                    {% endif %}
                </ul>

            </div>
        </div>
    </div>

对代码中的一些模板语法进行解释:

  • {% if page_obj.has_previous %}/{% if page_obj.has_next %}:查看当前页面置否存在上一页或者下一页
  • {{ page_obj.previous_page_number }}/{{ page_obj.next_page_number }}:输出上一页或者下一页页码
  • {{ num }}:输出当前页的页码
  • "?page={{ page_obj.next_page_number }}":指向下一页的链接
  • <li class="next-page disabled"><span>下一页</span></li>:制作不满足再按动“下一页”的按钮样式

 对第一个网站的一些基本的功能的复现就差不多是这样啦,后续会对页面设计更高级的动态页面进行django的网页学习和复现

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值