目标下图
1、Django 路由urls
url('purchase/$', views.purchase)
2、Django 逻辑层views
def purchase(request):
# 获取前端页面的路由,然后进行分析
fullpath = str(request.get_full_path())
if fullpath.find('pagesize') == -1 and fullpath.find('page=') == -1:
urls = fullpath + '?page='
elif fullpath.find('pagesize') == -1 and fullpath.find('page=') > 0:
urls = fullpath[0:fullpath.find('?page=')] + '?page='
elif fullpath.find('pagesize') > 0 and fullpath.find('page=') == -1:
urls = fullpath + '&page='
elif fullpath.find('pagesize') > 0 and fullpath.find('page=') > 0:
urls = fullpath[0:fullpath.find('&page=')] + '&page='
# 前端获取的页码,默认是1
CurPage = int(request.GET.get("page", 1))
# 获取前端的分页数字,每一页可以展示多少条数据
try:
pagesize = int(request.GET.get("pagesize", 10))
except:
pagesize = 10
if pagesize == 0:
pagesize = 10
# 数据对象所有
Purchase = enteroutuser.objects.all()
# 根据每页多少条数据进行整理的数据对象
paginator = Paginator(Purchase, pagesize)
# 一共多少页
numbers = paginator.num_pages
# 一共多少条记录
number = int(len(Purchase))
# 获取每页的数据对象
try:
page_someone = paginator.page(CurPage)
except EmptyPage:
page_someone = paginator.page(1)
# 每页开始页码,整个页面最多显示7页,多的不展示
begin = (CurPage - 3)
if begin < 1:
begin = 1
# 每页结束页码
end = begin + 6
if end > paginator.num_pages:
end = paginator.num_pages
if end <= 7:
begin = 1
else:
begin = end - 6
# pagelist = range(1, 4)
pagelist = range(begin, end + 1)
return render(request, "purchase.html", locals())
3、前端页面再templates中的purchase.html
这里的是对应你创建的数据中字段的名称
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<title>分页测试</title>
<script src="../static/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../static/js/jquery-3.4.1.min.js"></script>
<style>
tbody tr {
text-align: center
}
thead th {
text-align: center
}
li {
list-style-type: none;
}
</style>
</head>
<body>
<div>
<div><h3>{{number}}条记录</h3>
<form action="/purchase/" method="GET" role="form"
style="width: 100%;float: left">
{%if pagesize%}
行数:<input type="text" value="{{pagesize}}" name="pagesize" autocomplete="off">
{%else%}
<input type="text" value="10" name="pagesize" autocomplete="off">
{%endif%}
<button type="submit" value="">查询</button>
</form>
</div>
<div style="height: 50px"></div>
<table>
<tr>
<th style="width: 50px">#</th>
<th style="width: 150px">姓名</th>
<th style="width: 150px">手机号码</th>
<th style="width: 200px">身份证号码</th>
<th style="width: 60px">性别</th>
<th style="width: 60px">状态</th>
<th style="width: 260px">备注</th>
<th style="width: 50px">状态</th>
<th style="width: 180px">创建时间</th>
<th style="width: 200px">更新时间</th>
</tr>
<tbody>
{% for item in page_someone %}
<tr>
<td>{{item.id}}</td>
<td>{{ item.username}}</td>
<td>{{ item.number}}</td>
<td>{{ item.idnumber }}</td>
<td>{{ item.gender }}</td>
<td>{{ item.enteroutstatus }}</td>
<td>{{ item.remarks }}</td>
<td>{{ item.deletestatus }}</td>
<td>{{ item.createtime|date:"Y年m月d日" }}</td>
<td>{{ item.updatetime|date:"Y年m月d日" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<nav>
<ul>
<li>
{% if page_someone.has_previous %}
<a href="{{urls}}{{ CurPage|add:-1 }}">
<span> 上一页 </span>
</a>
{% else %}
<a href="#">
<span> 上一页 </span>
</a>
{% endif %}
</li>
{% for n in pagelist %}
{% if CurPage == n %}
<li class="active"><a href="{{urls}}{{ n }}">{{ n }}</a>
{% else %}
<li><a href="{{urls}}{{ n }}">{{ n }}</a></li>
{% endif %}
{% endfor %}
<li>
{% if page_someone.has_next %}
<a href="{{urls}}{{ page_someone.next_page_number }}">
<span> 下一页 </span>
</a>
{% else %}
<a href="#">
<span> 下一页 </span>
</a>
{% endif %}
</li>
<li>
<a><span>共 {{ numbers }}页</span></a>
</li>
</ul>
</nav>
</div>
</body>
</html>
4、打开浏览器进入数据展示页面
页面没有样式,但是我们需要的功能都可以显示到页面上的。
5、每页展示的数量
每页显示1条数据,然后就分成了12页,然后点击每一页都会进行跳转