中间件middleware
-
使用前的配置
-
新建一个与app同级别的文件夹
-
文件夹中新建py文件,创建middle类. 必须继承MiddlewareMixin类
-
在setting.py中注册中间件
-
MIDDLEWARE = [ ... 'middleware.mymiddleware.MyMiddleware' # 新建的middleware类 ]
-
注:有多个中间件时,按照注册时,从上往下执行
-
-
使用
class MyMiddleware(MiddlewareMixin): def process_request(self, request): """ :param request: 只有这一个参数 :return: 返回None,或者不写返回值,或者返回HttpResponse类(子类) """ print("进入主路由之前执行") request.data = "aaa" # 可以将需要传的值给request,在视图函数中可以取到 def process_view(self, request, view_func, view_args, view_kwargs): """ :param request: :param view_func: Django 即将使用的视图函数 :param view_args: 将传递给视图的位置参数的列表 :param view_kwargs: 将传递给视图的关键字参数的字典。 :return: 返回None,或者不写返回值,或者返回HttpResponse类(子类) """ print("执行视图函数前执行") print(view_func) def process_response(self, request, response): """ :param request: :param response: 必须要有这个响应参数!!! :return: 必须要有返回(HttpResponse类(子类)) !!! """ print("响应之后执行的") return response def process_exception(self, request, exception): print("错误时执行") print(exception) return HttpResponse("页面出错了")
视图函数可以取出存在request中的值
data = request.data