Django学习7-Bootstrap样式:分页

本文介绍了如何在Django项目中使用Bootstrap样式进行topics页面的分页设置。内容包括理解Paginator类的属性和方法,如何在模板中使用Bootstrap的Pagination组件,并通过示例展示了如何处理第一页和最后一页的特殊情况。
摘要由CSDN通过智能技术生成

使用Bootstrap设置项目样式

topics页面分页设置

当前topics页面下显示全部的topic,没有分页设置,下面使用django.core.paginator.Paginator进行分页设置。
class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)的构成:

  • 接受一个对象列表object_list
  • 每页显示的对象数量per_page
  • orphans不为0时,最后一页会增加显示那些不够一页的对象;
  • 当对象列表没有数据时,默认返回一个没有对象的空页。

Paginator分页类的几个属性:

  • Paginator.count:获取object_list的对象数量;
  • Paginator.num_pages:获取分页的总页数;

在request请求中可以获取当前要显示的页面,其URL形式为http://127.0.0.1:8000/topics/?page=1Paginator.get_page方法会返回一个Page对象,它像是包含当页显示对象的一个列表。

Page对象属性:

  • object_list:当前页包含的显示对象;
  • number:当前页的页数;
  • paginator:获取与page对象相关联的分页对象paginator

Page对象方法:

  • .has_previous():是否有前一页;
  • .has_next():是否有后一页;
  • previous_page_number():前一页页数;
  • next_page_number() :下一页的页数;
    根据PaginatorPage类,设计分页显示。
@login_required
def topics(request):
    """全部的topics"""
    # 取当登录前用户创建的topic
    topics = Topic.objects.filter(owner=request.user).order_by('-date_added')
    paginator = Paginator(topics, 25) # 每页25条
    page = request.GET.get('page')
    topics = paginator.get_page(page) # 获取指定页面
    context = {
   'topics':topics}
    return render(request, 'topics.html', context)

将当前页Page对象实例topics传入topics模板:

{% extends "base.html" %}

{% block title %}Topics{% endblock %}
{% block header %}
  <h2>Topics:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值