使用简单的算法得出页码数,然后在html中获取即可。仅供参考。

views的写法

 def crm_stu(request):
section = '教师后台管理页'
search = request.GET.get('search', '').strip() #搜索的值
if search:
# 如果是数字,则返回qq或者phone的查询结果
if search.isdigit():
sts = Students.objects.filter(Q(qq=search) | Q(phone=search), is_deleted=False).order_by('-e_time')
# 如果不是数字,则返回姓名的查询结果。
else:
sts = Students.objects.filter(name__contains=search, is_deleted=False).order_by('-e_time') # 如果搜索的值不存在,则返回没有删除的值。
else:
sts = Students.objects.filter(is_deleted=False).order_by('-e_time') 把需要的数据计算出来,然后传给tags标签
# 当前页
page = request.GET.get('page', 1)
page = int(page)
# 每页显示的数据条数
per_page = request.GET.get('per_page', 10)
per_page = int(per_page)
# 总学生数
total_count = sts.count()
# 总页数
total_page = math.ceil(total_count/per_page) # 获取数据的范围。
sts = sts[(page-1)*per_page:page*per_page] #把需要的参数和值传送给html
return render(request, 'teacher/crm-stu.html', context={
'section': section,
'sts': sts,
'search': search,
'page': page,
'per_page': per_page,
'total_page':total_page,
})

标签tags的方法定义

 # 注册并把配置的网页放进来,并把context传给网页
@register.inclusion_tag('inclu_tags/pagination.html',takes_context=True) def pagination(context): # 除当前页外,每两边的页码数
num = 2
page = context['page']
per_page = context['per_page']
total_page = context['total_page'] page_list = []
# 生成左边的页码以及当前页码
if page - num <= 0: #如果当前页面减去num的数量小于等于0,则左边页码是展示不全的,不够num的数量
for i in range(page):
page_list.append(i+1)
else:
for i in range(page-num,page+1):
page_list.append(i) # 生成右边的页码
if page + num >= total_page: #如果当前的页码加上num的数量大于总页数,则右边的页码超出了总页数,就需要页码只到总页数为止
for i in range(page+1, total_page+1):
page_list.append(i)
else:
for i in range(page+1, page+num+1):
page_list.append(i) return {
'page_list': page_list,
'context': context,
}

num代表页面两边的页面数量。每边的页码只有2个,则num就是2。

html中的用法:css样式请忽略

 <nav aria-label="Page navigation">
<ul class="pagination" style="margin: 0"> <!--如果当前页码为1,则显示css样式,不能点击-->
<li {% if context.page == 1 %}class="disabled" {% endif %}>
如果当前页码为大于1,则加上href标签,可以有点击上一页的标签,且上一页的标签需要渲染出来。是当前网址+参数(搜索内容,当前页码-1,每页展示的数据条数)
<a {% if context.page > 1 %}href="{{ request.path }}?search={{ context.search }}&page={{ context.page|add:'-1' }}
&per_page={{ context.per_page }}"{% endif %} aria-label="Next">
<span aria-hidden="true">&laquo;</span>
</a> </li>
{% for page in page_list %}
<li {% if context.page == page %}class="active" {% endif %}><a href="{{ request.path }}?search={{ context.search }}
&page={{ page }}&per_page={{ context.per_page }}">{{ page }}</a></li>
{% endfor %}
<li {% if context.page == context.total_page %}class="disabled" {% endif %}>
<a {% if context.page < context.total_page %}href="{{ request.path }}?search={{ context.search }}&page=
{{ context.page|add:'1' }}&per_page={{ context.per_page }}"{% endif %} aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<li><a href="{{ request.path }}?page=1&per_page={{ context.per_page }}">回到首页</a></li>
</ul>
</nav>

Django内置分页功能

# 接受两个参数
from django.core.paginator import Paginator
from teacher.models import Students
>>>p = Paginator(Students.objects.all().ordet_by('-c_time'), 3) # 总数据量
>>> p.count
15 # 总页数
>>> p.nun_pages
5 # 页面范围
>>> p.page_range
range(1,6) # 返回第一页的数据
>>> page1 = p.page(1) # 获取的是一个可迭代的set字段
>>> page1.object_list
<QuerySet [<Students: 哈哈哈-23>, <Students: 哈哈-15>, <Students: aaaasdds-16>]> # 是否有上一页
>>> page1.has_previous()
False # 是否有下一页
>>> page.has_next()
True # 下一页的页码
>>> page1.next_page_number()
2 # 获取当前页的数据
>>> s = p.get_page(1) # 当前页码
>>>page1.nunber
1

python的Web框架,html分页的更多相关文章

  1. Python Flask Web 框架入门

    Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...

  2. 比我的脸还干的gan货——Python Flask Web 框架入门

    Flask是一个轻量级的基于Python的web框架. 本文适合有一定HTML.Python.网络基础的同学阅读. 1. 简介 这份文档中的代码使用 Python 3 运行.是的,所以读者需要自己在电 ...

  3. Python之Web框架Django

    Python之Web框架: Django 一. Django Django是一个卓越的新一代Web框架 Django的处理流程 1. 下载地址  Python 下载地址:https://www.pyt ...

  4. Python之Web框架

    Python之Web框架: 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env pyth ...

  5. python 实现web框架simfish

    python 实现web框架simfish 本文主要记录本人利用python实现web框架simfish的过程.源码github地址:simfish WSGI HTTP Server wsgi模块提供 ...

  6. Python之Web框架们

    Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...

  7. python各种web框架对比

    0 引言        python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的 ...

  8. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

  9. python之web框架(3):WSGI之web应用完善

    python之web框架(3):WSGI之web应用完善 1.上篇的web框架太low,只能实现回应固定页面.现在将它进行完善.首先将wsgi和web服务器进行分离,并给予它回复静态页面的能力. we ...

  10. python之web框架(2):了解WSGI接口

    python之web框架(2):了解WSGI接口 1.什么是wsgi接口: wsgi:Web Service Gateway Interface.它不是模块,而只是一种规范,方便web服务器和各种框架 ...

随机推荐

  1. 搭建django

    虚拟环境配置 pip install virtualenv 一般需要安装一个管理工具:pip install virtualenvwrapper-win 只有它可以使用workon 创建虚拟环境:mk ...

  2. 重写equals和hashCode的方法

    为什么要有 hashCode引用 我们以"HashSet 如何检查重复"为例子来说明为什么要有 hashCode: 当你把对象加入 HashSet 时,HashSet 会先计算对象 ...

  3. 【轻松前端之旅】CSS入门

    编写css,很自然的思路: 1.给哪些元素添加样式呢?选择器技术就解决这个问题. 2.添加哪些样式?这就要了解css样式属性及它的值对应的显示规则了. 因此,学习css首先要学的就是选择器,至于样式属 ...

  4. 前端基于easyui的mvc扩展

    背景 由于MVC的前端是基于jquery.validate和jquery.validate.unobtrusive来实现的,但是当我们要使用其他的ui组件且组件本身就带有完整的验证功能的话,那么要让它 ...

  5. day12_雷神_线程总结

    #线程 1. 多线程理论 0.进程只是一个资源单位,用来隔离资源,从执行角度是主线程. 1.多个线程共享一个进程的数据资源: 2.线程开销小: 2. 开线程的两种方式 0. 站在资源的角度,主进程:执 ...

  6. BASH 环境

    本节内容 1.  什么是shell 2.  命令的优先级 3.  元字符 4.  登录shell与非登录shell 一  什么是shell shell一般代表两个层面的意思,一个是命令解释器,如bas ...

  7. CentOS操作系统防火墙添加例外端口

    http://blog.csdn.net/inrgihc/article/details/63392004 CentOS6与CentOS7添加防火墙例外端口的命令不用,需单独来说: (1)CentOS ...

  8. 关于javac和java

    1.为什么安装完jdk后不配置环境变量就能直接运行java,而不能运行javac 在安装jdk的时候jdk会自带一个jre(java运行环境),还会单独安装一个jre,默认路径是和jdk在同级目录,而 ...

  9. ios webview下footer部分fixed失效问题

    场景: 如下图所示,一个很正常的页面需求,footer固定在底部,中间为滚动内容区 然后footer的css一般是这样的 footer{ position:fixed; bottom:; left:; ...

  10. Shell - 文本处理

    珠玉在前,不再赘言. 常用命令 LinuxShell文本处理工具集锦 数据工程师常用的Shell命令 文件和目录管理 简明教程 AWK简明教程 SED简明教程 命令详解 linux sort,uniq ...