(28)django的中间件(自定义中间件)-重要的概念

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

猜你喜欢

转载自www.cnblogs.com/shizhengquan/p/10559728.html