本文主要是介绍2021-08-03-DJ-021 django 的分页器使用,Paginator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们在list页面显示列表,但是全部用户一起显示就太多了,用户好在当时只生成了一百多个,换成3000条订单一起显示,加载出来不知道要多久。
所以页面势必要进行切割 分页
这节做完的 源代码在这里
官方文档 对分页器的实现的描述
操作视频一直显示审核,我还是直接放链接,等审核完就可以看了
这节主要是带大家进行实操
1.思路
根据分页器类提供的属性和方法,对用户列表的界面进行分页
2.视图函数
参数的意思在代码注释里
import os
import uuid
from os.path import existsfrom django.contrib.auth.hashers import check_password
from django.core.paginator import Paginator
from django.http import HttpRequest, HttpResponse, JsonResponse, HttpResponseRedirect
from django.shortcuts import render, redirectfrom mainapp.models import UserModeldef userpage(request):'''page是页码,pager是显示的页面内容,paginator是分页器,这里设置一页10个:param request::return:'''users=UserModel.objects.all()page=request.GET.get('page',1)paginator=Paginator(users,10)pager = paginator.page(page)return render(request,'mainapp/list.html',locals())
2.路由
修改原来的路由连接到新的视图函数
# path('list',user_list,name='list'),#002手写数据#010用户登录重定向path('list',userpage,name='list'),#021做分页的用户列表
3.模板
模板修改原来的用户列表list.html
这里的用户列表变为了pager.object_list,不是原来的users了,如果还用原来的那么显示的内容就还是原来那些,点下面的链接就没有用了。
pager.has_previous和has_next表示有没有上一个或下一个,这里有的话2个箭头符号是个相应的链接,没有的话就是空链接
{% extends 'index.html' %}
{% block metas %}{% if request.COOKIES.token == None %}<meta http-equiv="refresh" content="3;url=/main/logout">{% endif %}
{% endblock %}{% block title %}
用户列表
{% endblock %}{% block content %}
{% if request.COOKIES.token != None %}<p>登录者:{{ request.session.login_user.user_name }}</p><table class="table table-responsive" style="text-align: center;vertical-align: middle"><thead class="text-capitalize"><td>头像</td><td>账户</td><td>电话</td><td>年龄</td><td>账户状态</td></thead><tbody>{% for user in pager.object_list %}<tr><td><img height="100" src="/media/{{ user.img1|escape }}" ></td><td>{{ user.name }}</td><td>{{ user.number }}</td><td>{{ user.age }}</td><td>{{ user.status }}</td></tr>{% endfor %}</tbody></table><div class="align-middle" align="center"><a href="{% if pager.has_previous %}?page={{ pager.previous_page_number }} {% else %} # {% endif %}"><</a>{% for p in paginator.page_range %}<a href="?page={{ p }}" class="{% if pager.number == p %} link-danger {% endif %}">{{ p }}</a>{% endfor %}<a href="{% if pager.has_next %}?page={{ pager.next_page_number }} {% else %} # {% endif %}">></a></div>
{% else %}<h3>用户未登录,3秒后进入登录页</h3>
{% endif %}{% endblock %}
4.显示效果
样式就自己画,我 就随便取了一个编好的样式
这篇关于2021-08-03-DJ-021 django 的分页器使用,Paginator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!