Django-分页、中间键

> 分页功能

ticket

数据库的增加

删除

修改

自己实现登录注册

  1. 中间件Middleware

中间件:

a) 是一个轻量级的,底层的插件,可以介入Django的请求和响应的过程(面向切面编程)

b) 中间件的本质就是一个python类

c) 面向切面编程(Aspect Oriented Programming)简称AOP,AOP的主要实现目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获取逻辑过程中各部分之间低耦合的隔离效果

思考:

什么是中间件,在settings.py中有很多的中间件,主要是用来做什么功能的呢,他们处理请求的url的过程在那些阶段呢,一般用来做那些数据的处理呢

1.1 中间件的处理函数
__init__:没有参数,在服务器响应的第一个请求的时候自动调用,用户确定时候启动该中间件

process_request(self, request): 在执行视图前被调用,每个请求上都会被调用,不主动进行返回或返回HttpResponse对象

process_view(self, request, view_func,view_args, view_kwargs):调用视图之前执行,每个请求都会调用,不主动进行返回或返回HttpResponse对象

process_template_response(self, request, response):在视图刚好执行完后进行调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象

process_response(self, request, response):所有响应返回浏览器之前调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象

process_exception(self, request, exception):当视图抛出异常时调用,不主动进行返回或返回HttpResponse对象
1.2 处理流程

图

1.3 自定义中间件流程
  1. 在工程目录下创建middleware目录
  2. 目录中创建一个python文件
  3. 在根据功能需求,创建切入需求类,重写切入点方法
  4. from django.utils.deprecation import MiddlewareMixin
class AuthUserMiddleWare(MiddlewareMixin):

    def process_request(self, request):

        print(‘xxxx’)
  1. 启动中间件,在settings中进行配置,MIDDLEWARE中添加middleware.文件名.类名

图

2.分页

2.1 分页库Paginator的基本语法

django提供了分页的工具,存在于django.core中

Paginator: 数据分页工具
Page:具体的某一页

Paginator:

对象创建: Paginator(数据集,每一页数据)

属性:

count  计算和

num_pages: 页面总和

page_range: 页码列表,从1开始

方法:

page(页码):获取的一个page对象,页码不存在则抛出invalidPage的异常
2.2 常见错误
invalidPage:page()传递无效页码

PageNotAnInteger:Page()传递的不是整数

Empty:page()传递的值有效,但是没有数据
2.3 page对象

page:

对象获取,通过Paginator的page()方法获得

属性:

object_list: 当前页面上所有的数据对象
number: 当前页的页码值
paginator: 当前page关联的Paginator对象

方法:

has_next()   判断是否有下一页
has_previous():  判断是否有上一页
has_other_pages():  判断是否有上一页或下一页
next_page_number();  返回下一页的页码
previous_page_number(): 返回上一页的页码
len(): 返回当前也的数据的个数
2.4 Paginator对象和Page对象的关系

如下有学生表,学生表中有25条数据,通过分页,每一个6条数据,去实现分页的功能

图

2.5 代码

图