django中间件
# 1.所有的请求和响应都必须经过中间件 # 2.django中间件默认自带七个,每个中间件负责不同的功能 """Django中间件的作用""" -1.修改请求,即传送到view中的HttpRequest对象。 -2.修改响应,即view返回的HttpResponse对象。 # 3.中间件的配置: 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', # 4.常见的中间件方法(五个) # 1).process_request - 1.请求来的时候会按照配置文件中注册了的中间件 从上往下依次执行每一个中间件里面的process_request方法 如果没有则直接跳过 - 2.该方法如果返回了HttpResonse对象 那么请求不会再往后执行 原路返回 # 2).process_response - 1.响应走的时候会按照配置文件中注册了的中间件 从下往上一次执行每一个中间件里面的process_response方法 没有没有则直接跳过 - 2.该方法有两个形参request和response 并且默认情况下应该返回response - 3.该方法也可以自己返回HttpResponse对象 相当于狸猫换太子 """ 注意:如果请求的过程中process_request方法直接反悔了 HttpResponse对象那么会原地执行同级别process_response方法返回(flask则不同) """ # 3).process_view 当路由匹配成功之后 执行视图函数之前 自动触发 # 4).process_excption 当视图函数报错之后 自动触发 # 5).process_template_response 当视图函数返回的数据对象中含有render属性对应render函数才会触发 # 5.自定义中间件 - 1. 创建一个任意名的文件夹 - 2. 文件夹内创建一个任意名的py文件 - 3. 在py文件内编写中间件类(参考自带中间件的代码编写类并继承)
- 4. 在配置文件中注册即可(注册后才可以生效)
标签:process,request,middleware,中间件,django,session,response From: https://www.cnblogs.com/juzijunjun/p/16996987.html