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),
该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友