您的位置:首页 > 编程语言 > Go语言

Django--中间件详解

2018-07-14 17:09 211 查看

Django的中间件相当于一个轻量级,底层的插件系统,可以接入到Django的请求和响应的处理过程,修改Django的输入和输出.

中间件无侵入式的开发方式增强了django 的健壮性.

中间件的定义方法

在users应用中新建一个middleware.py文件,   

# 此文件中定义中间件,补充额外的业务逻辑def my_middleware(get_response):print('init 被调用') # 此处代码仅在Django第一次配置和初始化的时候执行    def middleware(request):print('before request 被调用') # 此处代码在每个请求处理视图函数前被调用response = get_response(request)print('after response 被调用') # 此处代码会在每个请求处理视图函数之后被调用return responsereturn middleware再定义另外一个中间件 middlware2

定义好中间件后,需要在settings.py 文件中添加注册中间件

# 中间件(flask请求勾子)MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',#'django.middleware.csrf.CsrfViewMiddleware', #此处是csrf防护 注释代表不要csrf防护'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',# 注册中间件的地方'middleware.my_middleware','middleware.my_middleware2',]

定义视图函数测试:

def demo_view(request):print('view 视图被调用')return HttpResponse('OK')
注意:Django运行在调试模式下,中间件init部分有可能被调用两次。

执行结果:

init2 被调用init 被调用before request 被调用before request 2 被调用view 视图被调用after response 2 被调用after response 被调用

中间件的执行顺序:



阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: