Django--进阶

中间件

Django的生命周期

中间件的概念

中间件是介于request与response处理之间的一一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出,因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。

Django的中间件的定义:  

Middleware is a framework of kooks into Django's request/response    
processing. <br>It's a light, low-level "plugin" system for globally
altering Django's input or output.

如果你想修改请求,例如被传送到view中的HttpRequest对象,或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。

可能你还想在view执行之前做一些操作,这种情况就可以用middleware来实现。大家可能频繁在view使用request.user吧。Django想在每个view执行之前把user设置为request的属性,于是就用了一个中间件来实现这个目标,所以Django提供了可以修改request对象的中间件AuthenticationMiddleware.

Django默认的Middleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

每一中间件都有具体的功能

自定义中间件

中间件中一共有四个方法:

process_request

process_view

process_exception

process_response

process_request、process_response

当用户发起请求的时候会依次经过所有的中间件,这个时候的请求时process_request,最后到达views的函数中,views函数处理后,在依次穿过中间件,这个时候是process_respinse,最后

 

posted on 2018-01-29 16:53  一万年  阅读(129)  评论(0编辑  收藏  举报