Django中间件和中间件不是同一种东西
什么是中间件:中间件是一个很大的概念,只要程序和程序之间还有一层程序,用来处理两个程序的整个交互过程的请求、数据等等就叫中间件
Django中间件:是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能
中间件还有服务器中间件(tomcat,jboss),数据库中间件、消息队列中间件
Django内置的中间件
process request #请求来了触发该方法
process response #请求走触发该方法
自定义中间件
在项目app01目录下自定一个py文件,名字自定
PS:中间件可以代替装饰器,完成登陆验证等
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^middletest/$',views.middletest)
]
views.py
from django.shortcuts import render,HttpResponse,redirect
def middletest(request):
print('视图函数:middletest')
print(request.aa) #这里可以直接打印对象中的参数
return HttpResponse('我是中间件测试视图方法')
mymiddleware.py #这个是自定义中间件的文件
from django.shortcuts import render,HttpResponse,redirect
from django.utils.deprecation import MiddlewareMixin #要导入这个模块
class MyMiddle1(MiddlewareMixin): # 一定要继承MiddlewareMixin这个对象
def process_request(self, request): # request就是当次请求的request对象
print('我是MyMiddle1的process_request的方法')
request.aa = 'ooo #这里给对象定义了一个参数'
return HttpResponse('返回') #如果这里有return值,则后面的中间件不会再执行,包括视图函数也不会执行,这个原理就是做拦截
class MyMiddle2(MiddlewareMixin): # 一定要继承MiddlewareMixin这个对象
def process_request(self, request):
print('我是MyMiddle2的process_request的方法')
settings.py