Django 数据分页

在列表显示数据时,分页显示是必不可少的功能,django提供了一个分页器Paginator,下面的例子说明如何使用它。

1,写一个带分页功能的查询方法

编辑 myweb\web\views.py文件,加入如下代码

from models import Tasks

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

from django.views.decorators import csrf

#任务列表

def task_list(request):

    contact_list = Tasks.objects.all().order_by('-task_start_date')

    #每页显示25条

    paginator = Paginator(contact_list, 25) 

    page = request.GET.get('page')

    try:

        contacts = paginator.page(page)

    except PageNotAnInteger:

        contacts = paginator.page(1)

    except EmptyPage:

        contacts = paginator.page(paginator.num_pages)

    return render(request, 'taskList.html', {'contacts': contacts})

这里是将数据返回到前端页面 taskList.html页面。

2,前端页面获取并显示数据

在myweb\web\templates目录新建一个taskList.html文件,内容如下:

{% extends 'base.html' %}

{% block content %} 

<table class="tableList">

<thead>

<tr>

<th>任务名称</th>

<th>操作者</th>

<th>任务描述</th>

<th>开始日期</th>

<th>结束日期</th>

<th>任务评价</th>

</tr>

</thead>

<tbody>

{% if contacts.paginator.count > 0 %}

{% for contact in contacts %}

<tr>

<td> {{ contact.task_name }} </td>

<td> {{ contact.task_user }} </td>

<td> {{ contact.task_describe }}</td>

<td> {{ contact.task_start_date }} </td>

<td> {{ contact.task_end_date }} </td>

<td> {{ contact.task_result }}</td>

</tr>

{% endfor %}

{% else %}

<tr>

<td colspan="10" align="center">没有任务数据</td>

</tr>

{% endif %}

</tbody>

</table>

{# 分页HTML代码 #}

<div class="pagination">

    <span class="step-links">

        {% if contacts.has_previous %}

            <a href="?page={{ contacts.previous_page_number }}">上一页</a>

        {% endif %}

        <span class="current">

            Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.

        </span>

        {% if contacts.has_next %}

            <a href="?page={{ contacts.next_page_number }}">下一页</a>

        {% endif %}

    </span>

</div>

{% endblock %}

3,URL映射

编辑urls.py文件,加入:

url(r'^tasklist/', views.task_list),

本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用PythonDjango框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值