Django中间件
2016-12-14 15:01
225 查看
django 中间件 有4个关键方法
process_request() 应当返回 None 或 HttpResponse 对象. 如果返回 None ,
Django将继续处理这个request,执行后续的中间件, 然后调用相应的view. 如果返回 HttpResponse 对象,
Django 将不再执行 任何 其它的中间件(而无视其种类)以及相应的view。 Django将立即返回该 HttpResponse
process_view
这个方法的调用时机在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
process_response 这个方法的调用时机在Django执行view函数并生成response之后。这个方法的参数相当直观: request 是request对象,而 response 则是从view中返回的response对象。process_response() 必须 返回 HttpResponse 对象. 这个response对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
process_exception(self, request, exception)这个方法只有在request处理过程中出了问题并且view函数抛出了一个未捕获的异常时才会被调用。 这个钩子可以用来发送错误通知,将现场相关信息输出到日志文件, 或者甚至尝试从错误中自动恢复。
中间件注册
class AuthMiddleware(MiddlewareMixin): def process_request(self, request):#预处理请求可以用作权限控制 def process_view(self, request, view, args, kwargs): def process_response(self, request, response): def process_exception(self, request, exception):
process_request() 应当返回 None 或 HttpResponse 对象. 如果返回 None ,
Django将继续处理这个request,执行后续的中间件, 然后调用相应的view. 如果返回 HttpResponse 对象,
Django 将不再执行 任何 其它的中间件(而无视其种类)以及相应的view。 Django将立即返回该 HttpResponse
process_view
这个方法的调用时机在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
process_response 这个方法的调用时机在Django执行view函数并生成response之后。这个方法的参数相当直观: request 是request对象,而 response 则是从view中返回的response对象。process_response() 必须 返回 HttpResponse 对象. 这个response对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
process_exception(self, request, exception)这个方法只有在request处理过程中出了问题并且view函数抛出了一个未捕获的异常时才会被调用。 这个钩子可以用来发送错误通知,将现场相关信息输出到日志文件, 或者甚至尝试从错误中自动恢复。
中间件注册
MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'AuthMiddleware', ]
相关文章推荐
- Python菜鸟之路:Django 中间件
- Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据
- 深入学习Django源码基础13 - Django中的中间件(middleware)
- Django基础之模板语言、中间件和admin
- 详解Python的Django框架中的中间件
- Django 进阶(分页器&中间件)
- django 中间件记录所有请求及请求执行时间
- [Django高级]理解django中的中间件机制和执行顺序
- python3开发进阶-Django框架的中间件的五种用法和逻辑过程
- django数据库操作和中间件
- Django 补充models操作,中间件, 缓存,信号,分页
- Django 限制用户访问频率的中间件的实现
- Django中中间件系列之十四
- 第三百一十六节,Django框架,中间件
- 利用Django中间件middleware解决用户未登录问题(转)
- Django学习系列之中间件
- django -- cbv,fbv,中间件
- Django的模板语言自定义,Django的中间件
- 简介Django中内置的一些中间件
- 简介Django中内置的一些中间件