Django 分页功能的实现

Django 分页功能的实现

创建项目创建APP,添加APP这些就不在多说我们这次重点来看到视图函数
下面是路由设置
在这里插入图片描述
视图函数继承TemplateView
views.py

class index4(ListView):
    template_name = 'index5.html'  # 设置模板文件以至于找到该模板文件
    extra_context = {'title': '人员信息表'}  # 设置响应内容
    queryset = PersonInfo.objects.all()  # 设置查询模型查询所有信息
    paginate_by = 1  # 每页展示的数据
    context_object_name = 'personInfo'  # 设置模板名称

接下来就是HTML模板的编写
index5.py

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<table border="8">
    {% for i in personInfo %}
    <tr>
        <th>{{ i.name }}</th>
        <th>{{ i.age }}</th>
    </tr>
    {%endfor%}
</table>
<br>
{% if is_paginated %}
<div class="pagination">
    <span class="page-links">
        {% if page_obj.has_previous %}
        <a href="/?page={{ page_obj.previous_page_number }}">上一页</a>
        {% endif %}
        {% if page_obj.has_next %}
        <a href="/?page={{ page_obj.next_page_number }}">下一页</a>
        {% endif %}
        <br>
        <br>
        <span class="page-current">{{ page_obj.number }}页
            共{{ page_obj.paginator.num_pages }}</span>

    </span>
</div>
{% endif %}
</body>
</html>

运行功能图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django实现前后端分离的分页功能模块可以通过以下步骤进行: 1. 后端实现: - 创建一个 Django 视图函数,用于处理分页请求。可以使用 Django 的内置分页器类 `Paginator` 来实现分页功能。 - 在视图函数中,获取前端传递过来的当前页码和每页显示的数量。可以通过 `request.GET` 获取 GET 请求中的参数。 - 使用 `Paginator` 类对数据进行分页,并获取当前页的数据。 - 将分页结果和当前页码等信息封装成 JSON 格式返回给前端。 2. 前端实现: - 在前端页面中,通过 AJAX 或者其他方式发送分页请求到后端视图函数。 - 在接收到后端返回的 JSON 数据后,解析数据并渲染到页面上,显示分页结果。 - 创建前端的分页组件,包括上一页、下一页、跳转等功能,以便用户进行翻页操作。 下面是一个简单的示例代码: 后端实现(views.py): ```python from django.core.paginator import Paginator from django.http import JsonResponse def get_paginated_data(request): data = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10'] paginator = Paginator(data, 3) # 每页显示3条数据 page_number = request.GET.get('page') # 获取当前页码,默认为1 page_obj = paginator.get_page(page_number) current_page = page_obj.number total_pages = paginator.num_pages items = page_obj.object_list response_data = { 'current_page': current_page, 'total_pages': total_pages, 'items': items, } return JsonResponse(response_data) ``` 前端实现(JavaScript): ```javascript function getPaginatedData(page) { $.ajax({ url: '/get_paginated_data/', type: 'GET', data: {page: page}, success: function (response) { // 解析后端返回的 JSON 数据 var current_page = response.current_page; var total_pages = response.total_pages; var items = response.items; // 渲染数据到页面上 // ... }, error: function (xhr, status, error) { console.log(error); } }); } // 页面加载完成后,获取第一页的数据 $(document).ready(function () { getPaginatedData(1); }); // 翻页按钮点击事件 $('.pagination-button').click(function () { var page = $(this).data('page'); getPaginatedData(page); }); ``` 以上代码仅为示例,具体的实现方式可能因项目需求而有所不同。你可以根据实际情况进行调整和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值