当前位置:   article > 正文

Django高级扩展之中间件

Django高级扩展之中间件

中间件是Django请求/响应处理的钩子框架。它是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。每个中间件组件负责实现一些特定的功能。例如,Django包含一个中间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。

目录

方法介绍

__init__

process_request(self, request)

process_view(self, request_view_func, view_args,view_kwargs)

process_template_response(self, request,reponse)

process_response(self, request,reponse)

process_exception(self, request,exception)

默认中间件

自定义中间件

函数方式

创建中间件

中间件注册

请求验证

类方式

创建中间件

引入

定义类和请求处理

配置中间件

请求验证

总结

参考文章


方法介绍

__init__

不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件。

process_request(self, request)

在执行视图之前被调用(分配url匹配视图之前),每个请求都会调用,返回None或者HttpResponse对象。

process_view(self, request_view_func, view_args,view_kwargs)

调用视图之前执行,每个请求都会调用,返回None或者HttpResponse对象。

process_template_response(self, request,reponse)

在视图刚好执行完后调用,每个请求都会调用,返回None或者HttpResponse对象。

使用render时。

process_response(self, request,reponse)

所有相应返回浏览器之前调用,每个请求都会调用,返回None或者HttpResponse对象。

process_exception(self, request,exception)

当视图抛出异常时调用,返回HttpResponse对象。

默认中间件

在项目配置settings.py中。

  1. MIDDLEWARE = [
  2. 'django.middleware.security.SecurityMiddleware',
  3. 'django.contrib.sessions.middleware.SessionMiddleware',
  4. 'django.middleware.common.CommonMiddleware',
  5. 'django.middleware.csrf.CsrfViewMiddleware',
  6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  7. 'django.contrib.messages.middleware.MessageMiddleware',
  8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  9. ]

自定义中间件

工程目录project下创建middleware/应用名称/目录层级。

如下图所示:

函数方式

创建中间件

可通过函数方式来定义中间件。

在middleware目录下创建funMiddle.py,内容如下:

  1. def funMiddle(get_response):
  2. def middleware(request):
  3. response = get_response(request)
  4. print('这是函数方法中间件')
  5. print('参数:', request.GET.get('name'))
  6. return response
  7. return middleware

中间件注册

在settings.py中注册。

请求验证

路由

  1. # 中间件
  2. path('middle_test', views.middle_test, name='middle_test'),

视图

  1. def middle_test(request):
  2. print('这里是视图,参数为', request.GET.get('name'))

保存后运行项目,浏览器访问后控制器查看结果:

类方式

创建中间件

创建testMiddle.py文件

引入

在testMiddle.py中引入

from django.utils.deprecation import MiddlewareMixin

定义类和请求处理

定义testMIddle类,并设置方法接收get请求的参数并打印。

  1. class testMiddle(MiddlewareMixin):
  2. def process_request(self, request):
  3. print("GET请求参数为:", request.GET.get('name'))

配置中间件

修改settings.py,最下面添加testMiddle类。

请求验证

路由和视图不用更改。

运行项目,请求浏览器并通过控制台查看结果:

 

总结

Django中间件实现方式有两种:函数和类实现。

函数方式实现简单一些;类实现方法多一些,可以实现更复杂的应用场景。

参考文章

Django-自定义中间件_django 自定义中间件_Python454的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/378914
推荐阅读
相关标签
  

闽ICP备14008679号