在Django项目中,实现数据的分页导航效果(附代码)

 views.py

def paginate_queryset(queryset, request, per_page):
    """
    分页函数。

    参数:
    - queryset: Django 查询集,即要分页的数据集。
    - request: HttpRequest对象,用于获取请求中的页码参数。
    - per_page: 每页显示的记录数。

    函数返回:
    - Page分页对象,包含当前页的数据和分页信息,如比如总页数、页码列表等。
    """
    # 使用 request.GET.get('page') 获取当前页码,如果未提供,则默认为 1
    page_number = request.GET.get('page', 1)
    # 创建 Paginator 对象
    paginator = Paginator(queryset, per_page)
    # 使用 paginator.get_page() 获取当前页的数据
    page_obj = paginator.get_page(page_number)
    return page_obj



def my_view(request):
    # 假设 models.MyModel 是你的 Django 模型
    all_objects = models.Book.objects.all()
    # 调用分页函数,每页显示 5 条记录
    page_obj = paginate_queryset(all_objects, request, per_page=5)
    # 渲染模板,并传递分页对象
    return render(request, 'admin/user_list.html', {'page_obj': page_obj})

user_list.html

<div class="pagination">
  <!-- 上一页链接 -->
  {% if page_obj.has_previous %}
    <a href="/user/list/?page={{ page_obj.previous_page_number }}" rel="prev">上一页</a>
  <!--  分页参数?page={{ page_obj.previous_page_number }}  -->
  <!--    rel="prev":表示链接到上一页-->
  {% endif %}

  <!-- 当前页码显示 -->
  <span>第 {{ page_obj.number }} 页</span>

  <!-- 下一页链接 -->
  {% if page_obj.has_next %}
    <a href="/user/list/?page={{ page_obj.next_page_number }}" rel="next">下一页</a>
  {% endif %}
</div>

urls.py

path('user/list/', views.user_list, name='user_list')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值