中间件

1.process_request(self,request)

一次执行每一个中间键的request方法,一旦返回了HttpResponse对象,则请求不再继续往后执行,而是直接跳到同级别的process_request的方法

process_request(self,request)  在执行视图函数之前执行
	 请求来的时候会按照配置文件中注册的中间件从上往下的顺序依次执行每一个中间件里面的process_request方法,如果没有直接跳过执行下一个

 

 

2.process_response

process_response
	视图函数之后执行,此时过安检由内向外,后注册的先运行。
	
	process_response方法 该方法必须要有两个形参 并且需要将形参response返回,response就是返回给浏览器的内容
	如果你内部自己返回了HttpResponse对象 会将返回给用户浏览器的内容替换成你自己的
 def process_response(self,request,response):
        print('我是第一个中间件里面的process_reponse方法')
        return response  # 就是后端返回给前端浏览器的响应数据

3.process_view

process_view
	路由系统之后,视图系统之前执行
process_view(self, request, view_func, view_args, view_kwargs)
该方法有四个参数:
request是HttpRequest对象。
view_func是Django即将使用的视图函数。 (它是实际的函数对象,而不是函数的名称作为字符串。)
view_args是将传递给视图的位置参数的列表.
view_kwargs是将传递给视图的关键字参数的字典。 view_args和view_kwargs都不包含第一个视图参数(request)。

Django会在调用视图函数之前调用process_view方法。

它应该返回None或一个HttpResponse对象。 如果返回None,Django将继续处理这个请求,执行任何其他中间件的process_view方法,
然后在执行相应的视图。 如果它返回一个HttpResponse对象,那么将不会执行Django的视图函数,而是直接在中间件中掉头,倒叙执行一个个process_response方法,最后返回给浏览器

4.process_exception

process_exception
	当视图函数报错的时候自动触发
process_exception(self, request, exception)
该方法两个参数:
一个HttpRequest对象
一个exception是视图函数异常产生的Exception对象。

这个方法只有在视图函数中出现异常了才执行,它返回的值可以是一个None也可以是一个HttpResponse对象。如果是HttpResponse对象,
Django将调用模板和中间件中的process_response方法,并返回给浏览器,否则将默认处理异常。如果返回一个None,
则交给下一个中间件的process_exception方法来处理异常。它的执行顺序也是按照中间件注册顺序的倒序执行。

5.process_template_reponse

process_template_reponse(用的比较少)
	视图函数执行完成后立即执行
process_template_response(self, request, response)

它的参数,一个HttpRequest对象,response是TemplateResponse对象(由视图函数或者中间件产生)。

process_template_response是在视图函数执行完成后立即执行,但是它有一个前提条件,
那就是视图函数返回的对象有一个render()方法(或者表明该对象是一个TemplateResponse对象或等价方法)。
 
posted @ 2021-10-25 22:47  mofr  阅读(67)  评论(0)    收藏  举报